本章讨论MyBatis的配置,MyBatis使用xml文件进行配置。配置的内容一般会包括数据库、映射文件路径等。
MyBatis配置文件的典型结构如下:
<configuration>
<typeAliases>
<typeAlias alias = "类名" type = "类的全限定名"/>
</typeAliases>
<environments default = "环境默认名称">
<environment id = "环境ID">
<transactionManager type = "JDBC/MANAGED"/>
<dataSource type = "UNPOOLED/POOLED/JNDI">
<property name = "driver" value = "数据库驱动程序名"/>
<property name = "url" value = "数据库网址/url"/>
<property name = "username" value = "数据库用户名"/>
<property name = "password" value = "数据库密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource = "映射文件路径"/>
</mappers>
</configuration>
下面让我们逐个讨论重要标签。
除了这些重要标签,还有其他标签可用,可参考MyBatis官方文档。
environments 标签
environments 标签即环境标签,用于配置数据库,可配置多个环境连接多个数据库。environments 标签有2个子标签:
- transactionManager 标签
- dataSource 标签
transactionManager 标签
transactionManager 标签即事务管理器标签,支持2类事务管理器:JDBC和MANAGED/托管。
- JDBC – 使用JDBC类型的事务管理器,由应用程序负责事务管理操作,如提交、回滚等,利用java.sql.Connection对象完成对事务的管理
- MANAGED/托管 – 使用托管类型的事务管理器,由Java容器(tomcat, jetty)负责管理连接生命周期,应用程序本身不管理事务
dataSource 标签
dataSource 标签即数据源标签,用于配置数据库的连接参数:数据库的驱动程序名、url、用户名和密码。
数据源标签有3中类型
- UNPOOLED – 不使用连接池,单个连接用完就关闭,不复用,性能较差,通常用于简单的应用
- POOLED – 使用连接池,数据库连接会被复用以提升性能
- JNDI – MyBatis将从JNDI数据源获取数据库连接
环境标签示例:
<environments default = "development">
<environment id = "development">
<transactionManager type = "JDBC"/>
<dataSource type = "POOLED">
<property name = "driver" value = "com.mysql.jdbc.Driver"/>
<property name = "url" value = "jdbc:mysql://localhost:3306/qikegu_mybatis"/>
<property name = "username" value = "root"/>
<property name = "password" value = "password"/>
</dataSource>
</environment>
</environments>
typeAliases 标签
如需在MyBatis映射文件中使用短的类名(如com.qikegu.demo.User
的中User
),可配置类型别名标签。
<typeAliases>
<typeAlias alias = "User" type = "com.qikegu.demo.User"/>
</typeAliases>
配置好后,可在MyBatis映射文件中直接使用User
。
mappers 标签
MyBaits的映射文件包含了映射的SQL语句,使用MyBatis的主要工作就是在编写这些映射文件。mappers 标签用于配置映射文件的位置。
例如,映射文件名为User.xml,放在mapper目录下,可如下配置:
<mappers>
<mapper resource = "mapper/User.xml"/>
</mappers>
mapper标签除了通过resource
属性配置映射文件位置,还可通过其他方式配置:
- resource – 指向XML文件的类路径。
- url – 指向xml文件的完全限定路径。
- class – 可以使用映射接口代替xml文件,指向映射接口的类路径。
- name – 指向映射接口的包名。
本章示例使用resource属性。
MySQL数据库配置
MySQL数据库的配置参数(驱动程序名、url、用户名和密码),如下所示:
序号 | 属性 | 属性值 |
---|---|---|
1 | driver | com.mysql.jdbc.Driver |
2 | url | jdbc:mysql://localhost:3306/qikegu_mybatis (假设数据库名为”qikegu_mybatis” ) |
3 | username | root |
4 | password | password |
使用JDBC类型的事务管理器,所以必须在应用程序中手动执行事务操作,如提交、回滚等。
使用unpool类型的数据源,表示不使用连接池,建议在数据库操作完成后手动关闭连接。
MybatisConfig.xml
MyBatis配置文件的实际例子:MyBatisConfig.xml。
下面是MyBatisConfig.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>
<environments default = "development">
<environment id = "development">
<transactionManager type = "JDBC"/>
<dataSource type = "UNPOOLED">
<property name = "driver" value = "com.mysql.jdbc.Driver"/>
<property name = "url" value = "jdbc:mysql://localhost:3306/qikegu_mybatis"/>
<property name = "username" value = "root"/>
<property name = "password" value = "password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource = "mapper/UserMapper.xml"/>
</mappers>
</configuration>