MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中节点的顺序有要求,必须按照下面的顺序填写节点信息:
(properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databaseIdProvider,mappers)
<configuration>
<properties></properties>
<settings></settings>
<typeAliases></typeAliases>
<typeHandlers></typeHandlers>
<objectFactory></objectFactory>
<objectWrapperFactory></objectWrapperFactory>
<reflectorFactory></reflectorFactory>
<plugins></plugins>
<environments></environments>
<databaseIdProvider></databaseIdProvider>
<mappers></mappers>
</configuration>
环境配置与 mappers 映射器
基本的 MyBatis 配置:
<?xml version="1.0" encoding="UTF8" ?>
<!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="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!--每个mapper.xml都需要在mybatis配置文件中进行配置-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
在上面这段配置中配置了运行环境以及 mappers 映射器。
配置 environment 时,通过 transactionManager 指定事务管理器,通过 dataSource 指定数据库的引擎类型、连接方式、用户名、密码。
mappers 映射器用来和代码中写的 mapper 一一对应,在代码中写一个 mapper 接口和 mapper.xml 文件,就需要在 mappers 映射器中增加一个 mapper 节点。
属性(properties)
在写 mybatis-config.xml 环境配置的时候,将数据库的连接信息直接写在了 mybatis-config.xml 配置文件中,不方便后续的更改,因此可以使用属性(properties)的能力。
在 resources 目录下新建一个 db.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123
接着在 mybatis-config.xml 的 configuration 中添加 properties 节点,注意这个节点的位置必须放在首位。
<properties resource="db.properties">
</properties>
接着就可以用 properties 中的属性去代替 xml 中的属性
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
设置(settings)
配置文件中的 settings 是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
常用的设置有以下几种:
设置的配置方式如下:
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="logImpl" value="NO_LOGGING"/>
</settings>
类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
类型别名有两种方式,第一种是对类取别名,第二种是指定一个包名
<mapper namespace="com.cn.mapper.UserMapper">
<select id="getUserList" resultType="com.cn.pojo.User">
select * from user;
</select>
</mapper>
第一种方式是对类取别名,这里的 resultType 写的是类的全限定名,我们可以在 mybatis-config.xml 中使用类型别名来简化。typeAliases 在配置文件中的位置需要放在 setting 后面
<typeAliases>
<typeAlias type="com.cn.pojo.User" alias="user"/>
</typeAliases>
这样设置之后就可以在 resultType 中直接使用 user
<mapper namespace="com.cn.mapper.UserMapper">
<select id="getUserList" resultType="user">
select * from user;
</select>
</mapper>
第二种方式是指定一个包名,MyBatis 会在指定的包名路径下搜索需要的 JavaBean。修改配置文件,使用包名来指定
<typeAliases>
<package name="com.cn.pojo"/>
</typeAliases>
每一个在包 com.lanqiaoyun.pojo 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 com.lanqiaoyun.pojo.User 的别名为 user;若有注解,则别名为其注解值
@Alias("user")
public class User {
...
}
上方所示完整配置文件如下:
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties">
</properties>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="logImpl" value="NO_LOGGING"/>
</settings>
<typeAliases>
<package name="com.cn.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--每个mapper.xml都需要在mybatis配置文件中进行配置-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>