MyBatis核心配置文件深入分析
作者:一个双子座的Java攻城狮
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>
到此这篇关于MyBatis核心配置文件深入分析的文章就介绍到这了,更多相关MyBatis配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!