抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文学习了MyBatis配置文件的相关配置。

环境

Windows 10 企业版 LTSC 21H2
MySQL 5.7.40
Java 1.8
Maven 3.6.3
MyBatis 3.5.6

1 properties

properties元素用于指定外部配置文件,可以将数据库连接信息等配置放在配置文件中:

xml
1
2
3
4
5
6
<!-- 引入外部配置文件 -->
<properties resource="jdbc.properties">
<!-- 内部属性配置,优先级较低 -->
<property name="username" value="root"/>
<property name="password" value="123456"/>
</properties>

使用引入的属性:

xml
1
2
3
4
5
6
7
<!-- 使用属性 -->
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>

2 settings

settings元素用于配置全局参数:

xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<settings>
<!-- 是否开启驼峰命名自动映射,默认为false表示不开启 -->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!-- 是否允许通过配置控制二级缓存是否开启,默认为true表示允许 -->
<setting name="cacheEnabled" value="true"/>
<!-- 是否开启关联对象延迟加载,默认为false表示关闭 -->
<setting name="lazyLoadingEnabled" value="false"/>
<!-- 是否开启关联对象的完整加载,开启表示任意方法调用都会加载所有延迟加载的属性,关闭表示按需加载字段,默认为false表示关闭 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 是否允许单个语句返回多个结果集,默认为true表示允许 -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 是否允许使用别名代替列名,默认为false表示允许 -->
<setting name="useColumnLabel" value="true"/>
<!-- 是否允许使用自定义的主键值,默认为false表示不允许 -->
<setting name="useGeneratedKeys" value="false"/>
<!-- 指定日志实现,默认按顺序查找:SLF4J/LOG4J/LOG4J2/JDK_LOGGING/COMMONS_LOGGING/STDOUT_LOGGING/NO_LOGGING -->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 指定本地缓存的作用域,默认为SESSION作用域:SESSION会缓存整个会话的所有查询/STATEMENT只缓存当前查询 -->
<setting name="localCacheScope" value="SESSION"/>
</settings>

3 typeAliases

typeAliases元素用于配置类型别名,可以简化Mapper配置文件中的全类名,别名不区分大小写。

内置别名:

  • 使用String别名代替java.lang.String全类名
  • 使用Byte别名代替java.lang.Byte全类名
  • 使用Short别名代替java.lang.Short全类名
  • 使用Integer别名代替java.lang.Integer全类名
  • 使用Long别名代替java.lang.Long全类名
  • 使用Float别名代替java.lang.Float全类名
  • 使用Double别名代替java.lang.Double全类名
  • 使用Boolean别名代替java.lang.Boolean全类名
  • 使用Date别名代替java.util.Date全类名
  • 使用Map别名代替java.util.Map全类名
  • 使用List别名代替java.util.List全类名
  • 使用Collection别名代替java.util.Collection全类名
  • 使用Iterator别名代替java.util.Iterator全类名

3.1 单个别名配置

单独为指定类设置别名:

xml
1
2
3
<typeAliases>
<typeAlias type="com.example.pojo.User" alias="User"/>
</typeAliases>

在Mapper配置文件中使用别名:

xml
1
2
3
<select id="selectUserById" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>

3.2 批量别名配置

批量为包下的类设置别名,将首字母小写的简单类名作为别名:

xml
1
2
3
<typeAliases>
<package name="com.example.pojo"/>
</typeAliases>

在Mapper配置文件中使用别名:

xml
1
2
3
<select id="selectUserById" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>

4 typeHandlers

typeHandlers元素用于配置类型处理器,处理Java类型和JDBC类型之间的转换:

xml
1
2
3
4
<typeHandlers>
<!-- 使用内置类型处理器,也可以使用自定义类型处理器,支持使用多个类型处理器 -->
<typeHandler handler="org.apache.ibatis.type.EnumTypeHandler" javaType="com.example.enums.SexEnum" jdbcType="VARCHAR"/>
</typeHandlers>

5 plugins

plugins元素用于配置插件,可以实现自定义功能:

xml
1
2
3
4
5
6
7
8
<!-- 指定插件,可以配置多个插件 -->
<plugins>
<!-- 指定插件的全类名 -->
<plugin interceptor="com.example.plugin.DemoInterceptor">
<!-- 设置插件的参数 -->
<property name="param" value="100"/>
</plugin>
</plugins>

6 environments

environments元素用于配置运行环境,可以配置不同的数据源和事务管理器:

xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!-- 指定运行环境,可以配置多个环境,只能指定一个 -->
<environments default="dev">
<!-- 配置开发环境 -->
<environment id="dev">
<!-- 事务管理器 -->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 数据源 -->
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
<!-- 配置测试环境 -->
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
</dataSource>
</environment>
<!-- 配置生产环境 -->
<environment id="prod">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
</dataSource>
</environment>
</environments>

事务管理器类型:

  • JDBC:直接使用JDBC的提交和回滚
  • MANAGED:让容器管理事务的整个生命周期

数据源类型:

  • UNPOOLED:不使用连接池
  • POOLED:使用连接池
  • JNDI:使用JNDI数据源

7 mappers

mappers元素用于配置SQL映射的位置。

7.1 XML配置

指定Mapper映射文件的位置:

xml
1
2
3
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>

7.2 注解配置

指定Mapper接口的位置:

xml
1
2
3
<mappers>
<mapper class="com.example.mapper.UserMapper"/>
</mappers>

指定Mapper接口所在包的位置:

xml
1
2
3
<mappers>
<package name="com.example.mapper"/>
</mappers>

评论