MyBatis之SqlMapConfig.xml

本文介绍了MyBatis全局配置文件SqlMapConfig.xml的关键组成部分及其功能。包括属性配置、全局设置、类型别名、类型处理器等内容,并详细解释了各部分的作用及如何配置。

MyBatis之SqlMapConfig.xml

1.介绍

  • SqlMapConfig.xml是mybatis的全局配置文件,mybatis通过它创建SqlSessionFactory

  • 配置内容:

    properties(属性)
    settings(全局配置参数)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    plugins(插件)
    environments(环境集合属性对象)
        environment(环境子属性对象)
            transactionManager(事务管理)
            dataSource(数据源)
    mappers(映射器)
    

2.properties(属性)

SqlMapConfig.xml可以引用java属性文件中的配置信息如下:
在classpath下定义db.properties文件,

这里写图片描述
SqlMapConfig.xml引用如下:
这里写图片描述

注意: MyBatis 将按照下面的顺序来加载属性:

  • 在 properties 元素体内定义的属性首先被读取。
  • 然后会读取properties 元素中resource或 url 加载的属性,它会覆
    盖已读取的同名属性。
  • 最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
    因此,通过parameterType传递的属性具有最高优先级,resource或 url 加载的属性次之,最低优先级的是 properties 元素体内定义的属性。

3.settings(配置)

mybatis全局配置参数,全局参数将会影响mybatis的运行行为
这里写图片描述
这里写图片描述
这里写图片描述

4.typeAliases(类型别名)

4.1mybatis支持别名:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

4.2.自定义别名
在SqlMapConfig.xml中配置:
这里写图片描述
使用别名
这里写图片描述

5.typeHandlers(类处理器)

类型处理器用于java类型和jdbc类型映射,如下:

<select id="findUserById" parameterType="int" resultType="user">
        select * from user where id = #{id}
</select>

mybatis自带的类型处理器基本上满足日常需求,不需要单独定义。
mybatis支持类型处理器:

类型处理器Java类型JDBC类型
BooleanTypeHandlerBoolean,boolean任何兼容的布尔值
ByteTypeHandlerByte,byte任何兼容的数字或字节类型
ShortTypeHandlerShort,short任何兼容的数字或短整型
IntegerTypeHandlerInteger,int任何兼容的数字和整型
LongTypeHandlerLong,long任何兼容的数字或长整型
FloatTypeHandlerFloat,float任何兼容的数字或单精度浮点型
DoubleTypeHandlerDouble,double任何兼容的数字或双精度浮点型
BigDecimalTypeHandlerBigDecimal任何兼容的数字或十进制小数类型
StringTypeHandlerStringCHAR和VARCHAR类型
ClobTypeHandlerStringCLOB和LONGVARCHAR类型
NStringTypeHandlerStringNVARCHAR和NCHAR类型
NClobTypeHandlerStringNCLOB类型
ByteArrayTypeHandlerbyte[]任何兼容的字节流类型
BlobTypeHandlerbyte[]BLOB和LONGVARBINARY类型
DateTypeHandlerDate(java.util)TIMESTAMP类型
DateOnlyTypeHandlerDate(java.util)DATE类型
TimeOnlyTypeHandlerDate(java.util)TIME类型
SqlTimestampTypeHandlerTimestamp(java.sql)TIMESTAMP类型
SqlDateTypeHandlerDate(java.sql)DATE类型
SqlTimeTypeHandlerTime(java.sql)TIME类型
ObjectTypeHandler任意其他或未指定类型
EnumTypeHandlerEnumeration类型VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

6.mappers(映射器)

Mapper配置的几种方法:

这里写图片描述

### SqlMapConfig.xml 配置文件说明 `SqlMapConfig.xml` 是 MyBatis全局配置文件,主要用于定义数据库连接、事务管理以及 Mapper 映射文件的注册等内容。以下是该文件的主要组成部分及其功能: #### 1. XML 声明与 DOCTYPE 定义 XML 文件通常以声明版本和编码开头,并通过 `DOCTYPE` 来指定文档遵循的标准。 ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> ``` 此部分表明当前文件是一个基于 MyBatis 3.0 版本标准的配置文件[^1]。 --- #### 2. 属性资源加载 (`<properties>`) 可以通过 `<properties>` 节点引入外部属性文件,用于动态替换配置中的占位符 `${}`。 ```xml <properties resource="db.properties"/> ``` 例如,在 `db.properties` 中可以定义如下内容: ```properties jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test_db jdbc.username=root jdbc.password=123456 ``` 这些值可以在后续节点中被引用,从而实现灵活的资源配置[^2]。 --- #### 3. 设置项 (`<settings>`) `<settings>` 节点允许开发者调整 MyBatis 运行时的行为参数。常见的设置包括缓存控制、延迟加载等功能。 ```xml <settings> <setting name="cacheEnabled" value="true"/> <!-- 是否启用二级缓存 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 是否开启懒加载 --> </settings> ``` 具体选项的意义可参考官方文档或相关资料[^1]。 --- #### 4. 数据源配置 (`<dataSource>`) 数据源是 MyBatis 实现 JDBC 连接的核心组件之一。以下是一个简单的内置数据源示例: ```xml <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> ``` 其中,`type="POOLED"` 表示使用连接池来优化性能;而 `type="UNPOOLED"` 则表示每次请求都创建新的连接[^2]。 --- #### 5. Mapper 注册方式 MyBatis 提供多种方式将 SQL 映射文件注册到框架中,主要包括以下几种形式: ##### (1) 使用相对路径注册单个映射文件 ```xml <mapper resource="sqlmap/User.xml"/> ``` 这种方式适用于小型项目,适合手动维护少量映射文件的情况。 ##### (2) 使用绝对 URL 地址注册映射文件 ```xml <mapper url="file:///D:/workspace_spingmvc/mybatis_01/config/sqlmap/User.xml"/> ``` 这种做法较少见,但在某些特殊场景下可能有用,比如需要跨目录访问文件时。 ##### (3) 批量扫描整个包内的所有 Mapper 接口 如果采用注解风格开发,则可以直接指定包名让 MyBatis 自动发现并加载对应的 Mapper 类。 ```xml <package name="com.example.mapper"/> ``` 注意:此时要求接口类与其关联的 XML 文件同名且位于同一目录下。 --- ### 示例完整的 SqlMapConfig.xml 文件 下面给出一个综合性的例子展示如何组合以上各部分内容: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载属性文件 --> <properties resource="db.properties"/> <!-- 全局设置 --> <settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> </settings> <!-- 环境配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- Mapper 注册 --> <mappers> <mapper resource="sqlmap/User.xml"/> <mapper url="file:///path/to/OtherMapper.xml"/> <package name="com.example.mapper"/> </mappers> </configuration> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值