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 官方文档。
1. environments 标签
environments 标签即环境标签,用于配置数据库,可配置多个环境连接多个数据库。environments 标签有2个子标签:
- transactionManager 标签
- dataSource 标签
2. transactionManager 标签
transactionManager 标签即事务管理器标签,支持2类事务管理器:JDBC和MANAGED/托管。
- JDBC – 使用JDBC类型的事务管理器,由应用程序负责事务管理操作,如提交、回滚等,利用java.sql.Connection对象完成对事务的管理
- MANAGED/托管 – 使用托管类型的事务管理器,由Java容器(tomcat, jetty)负责管理连接生命周期,应用程序本身不管理事务
3. 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>
4. typeAliases 标签
如需在 MyBatis 映射文件中使用短的类名(如com.qikegu.demo.User的中User),可配置类型别名标签。
<typeAliases> <typeAlias alias = "User" type = "com.qikegu.demo.User"/> </typeAliases>
配置好后,可在 MyBatis 映射文件中直接使用 User。
5. 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 属性。
6. MySQL 数据库配置
MySQL 数据库的配置参数(驱动程序名、url、用户名和密码),如下所示:
序号 | 属性 | 属性值 |
---|---|---|
1 | driver | com.mysql.jdbc.Driver |
2 | url | jdbc:mysql://localhost:3306/aizws_mybatis (假设数据库名为 ”aizws_mybatis” ) |
3 | username | root |
4 | password | password |
使用JDBC类型的事务管理器,所以必须在应用程序中手动执行事务操作,如提交、回滚等。
使用unpool类型的数据源,表示不使用连接池,建议在数据库操作完成后手动关闭连接。
7. MyBatis Config.xml
MyBatis 配置文件的实例:MyBatis Config.xml。
下面是 MyBatis Config.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/aizws_mybatis"/> <property name = "username" value = "root"/> <property name = "password" value = "password"/> </dataSource> </environment> </environments> <mappers> <mapper resource = "mapper/UserMapper.xml"/> </mappers> </configuration>
下一章:MyBatis 映射文件
直接使用 JDBC 访问数据库,需要在程序中写 SQL 语句,然后执行,如果是查询语句,必须遍历查询结果,把结果读取到对象中。MyBatis 的 SQL 语句写在映射文件中。映射文件中的 SQL 语句有很多强大功能,如动态 SQL 可根据不同条件拼接 SQL 语句,结果集映射功能只需配置好参数,MyBatis 会直接把结果集读取到对象中,无需手动读取。