摘要:本文学习了MyBatis配置文件的相关配置。
环境
Windows 10 企业版 LTSC 21H2
MySQL 5.7.40
Java 1.8
Maven 3.6.3
MyBatis 3.5.6
1 properties
properties元素用于指定外部配置文件,可以将数据库连接信息等配置放在配置文件中:
xml1 2 3 4 5 6
| <properties resource="jdbc.properties"> <property name="username" value="root"/> <property name="password" value="123456"/> </properties>
|
使用引入的属性:
xml1 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元素用于配置全局参数:
xml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <settings> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="false"/> <setting name="aggressiveLazyLoading" value="false"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="logImpl" value="STDOUT_LOGGING"/> <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 单个别名配置
单独为指定类设置别名:
xml1 2 3
| <typeAliases> <typeAlias type="com.example.pojo.User" alias="User"/> </typeAliases>
|
在Mapper配置文件中使用别名:
xml1 2 3
| <select id="selectUserById" resultType="User"> SELECT * FROM user WHERE id = #{id} </select>
|
3.2 批量别名配置
批量为包下的类设置别名,将首字母小写的简单类名作为别名:
xml1 2 3
| <typeAliases> <package name="com.example.pojo"/> </typeAliases>
|
在Mapper配置文件中使用别名:
xml1 2 3
| <select id="selectUserById" resultType="User"> SELECT * FROM user WHERE id = #{id} </select>
|
4 typeHandlers
typeHandlers元素用于配置类型处理器,处理Java类型和JDBC类型之间的转换:
xml1 2 3 4
| <typeHandlers> <typeHandler handler="org.apache.ibatis.type.EnumTypeHandler" javaType="com.example.enums.SexEnum" jdbcType="VARCHAR"/> </typeHandlers>
|
5 plugins
plugins元素用于配置插件,可以实现自定义功能:
xml1 2 3 4 5 6 7 8
| <plugins> <plugin interceptor="com.example.plugin.DemoInterceptor"> <property name="param" value="100"/> </plugin> </plugins>
|
6 environments
environments元素用于配置运行环境,可以配置不同的数据源和事务管理器:
xml1 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映射文件的位置:
xml1 2 3
| <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers>
|
7.2 注解配置
指定Mapper接口的位置:
xml1 2 3
| <mappers> <mapper class="com.example.mapper.UserMapper"/> </mappers>
|
指定Mapper接口所在包的位置:
xml1 2 3
| <mappers> <package name="com.example.mapper"/> </mappers>
|
条