Dawn's Blogs

分享技术 记录成长

0%

SSM学习之MyBatis (2) 配置文件

配置文件用于配置 MyBatis,由 configuration 标签包裹。

MyBatis 配置文件中标签的顺序:

properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

基本配置

properties

properties 标签用于引入 properties 文件。

1
<properties resource="jdbc.properties" />

typeAliases

typeAliases 用于设置多个类型的别名,可以包含 typeAlias 标签和 package 标签。

  • typeAlias 标签用于设置某个类型的别名,有两个属性 type 和 alias,用于指定类型和别名(不设置别名,则使用默认的别名,即类名且不区分大小写)。
  • package 标签,以包为单位,将包下所有的类型设置默认的类型别名,即类名且不区分大小写。
1
2
3
4
<typeAliases>
<!--<typeAlias type="com.xxx.User"></typeAlias>-->
<package name="com.xxx"/>
</typeAliases>

MyBatis 中已经为常用类型设置了类型别名:

  • java.lang.Integer –> int|integer
  • int –> _int|_integer
  • Map –> map
  • List –> list
  • 。。。。。。

environments

environments 用于设置多个数据库连接配置,可以指定 default 环境 id。

environment 标签用于配置某个具体环境,属性 id 表示连接数据库的环境的唯一标识,不能重复。包含以下标签:

  • transactionManager 标签,设置事务管理方式。有属性 type,可选 JDBC 或者 MANAGED。
    • JDBC 表示当前环境中,执行 SQL 时,使用的是 JDBC 中原生的事务管理方式,事务的提交或回滚需要手动处理。
    • MANAGED 表示被管理,例如 Spring。
  • dataSource 标签,表示配置数据源。有属性 type 表示数据源类型,可选值为 POOLED(使用连接池)/UNPOOLED(不使用连接池)/JNDI(使用上下文中的数据源)。可以包含 property 标签用于配置数据库驱动、连接地址、用户名、密码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<environments default="dev">
<environment id="dev">
<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>

mappers

mappers 用于引入映射文件,可以包含 mapper 或者 package 标签。

  • mapper 标签,可以指定 resource 属性(或者 url、class 属性),用于引入 mapper 映射文件。
  • package 标签,以包为单位引入映射文件,但是有两个要求:(1)mapper 接口所在的包要和映射文件所在的包一致(2)mapper 接口要和映射文件的名字一致。
1
2
3
4
<mappers>
<!--<mapper resource="mappers/UserMapper.xml"/>-->
<package name="com.xxx.mapper"/>
</mappers>

其他配置

typeHandlers

typeHandlers 用于定义多个自定义类型转换,内嵌 typeHandler 标签。比如要把 java Date 类型转为 int 类型存储在数据库中,就需要使用自定义的类型转换。定义方式如下:

  1. 首先编写转换类,转换类需要实现 TypeHandler 接口或者继承 BaseTypeHandler 类。
  2. 在配置文件中注册 typeHandler 即可。
1
2
3
<typeHandlers>
<typeHandler handler="xxx.xxxTypeHandler"/>
</typeHandlers>

plugins

plugins 标签可以引入第三方插件,进行功能扩展。

分页插件

pageHelper 用于分页。

1
2
3
4
<plugins>
<!--设置分页插件-->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

使用方法:

  • 启用分页功能:PageHelper.startPage(int pageNum, int pageSize) 启用分页。
    • pageNum:页码数。
    • pageSize:每页的数据数量。
  • 获取分页信息:在查询获取 List 集合后,使用 PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int navigatePages) 获取分页信息。
    • list:分页后的数据。
    • navigatePages:导航分页的页码数。