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 会直接把结果集读取到对象中,无需手动读取。