mybatis核心配置文件,官网默认文件名为mybatis-config.xml,configuration下有如下几个属性配置,其中需要掌握的配置有properties,settings,typeAliases,environment,mappers,其他只做了解即可,开发中基本用不到。
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
1,properties
resource可以配置对应config.properties文件读取参数,也可以直接如下通过property配置参数,如果配置文件中的key值和property中的name值一致,会优先使用外部文件的key
<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </properties>
配置的参数,可以在environments属性下的datasource使用,如下
<dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource>
2,settings
setting的属性字段很多,当前只需要记住这几个
cacheEnabled 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存 默认关闭 false
lazyLoadingEnabled 默认关闭 false
logImpl SLF4J | LOG4J | LOG4J2 |
useGeneratedKeys 允许 JDBC 支持自动生成主键,需要数据库驱动支持 默认关闭 false
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="defaultFetchSize" value="100"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings>
3 typeAliases
类型别名,有两种方式
1)实体类别名,直接将实体类定义一个名字,后续在mapper中只需要用这个名字即可,如下图
<typeAliases> <typeAlias type="com.hys.mybatis.pojo.userDao" alias="user"></typeAlias> </typeAliases> <mapper namespace="com.hys.mybatis.dao.userDao"> <select id="getUserList" resultType="user" > select * from school.user </select> </mapper>
2)包名,不能用别名,如下,包名下的类使用小写就可以获得。实在要改别名需要添加注解
<typeAliases> <package name="domain.blog"/> </typeAliases>
<mapper namespace="com.hys.mybatis.dao.userDao"> <select id="getUserList" resultType="user" > select * from school.user </select> </mapper>
@Alias("giao") public class user{ ... }
4 environments
可以配置多套环境,只需要id不一致即可,但只能运行一套环境,通过id来确定用哪一套,如下图一套test,一套debelopment
transactionManager type="JDBC" //事务管理器,默认用jdbc,有两种
dataSource type="POOLED" //池子,作用是可以回收,每次连接关闭数据库都浪费资源,有资源池后,连接之后回收不关闭,下次继续使用
<environments default="test"> <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> <environment id="test"> <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>
5,mappers
1)相对于路径的资源使用,直接具体到对应的xml文件
<mappers> <mapper resource="com/hys/mybatis/dao/userDao.xml"/> </mappers>
2)class文件绑定注册,class指定到具体类,类名和xml文件名必须一致,且在同一个包下面
<mappers> <mapper class="com.hys.mybatis.dao.userDao"></mapper> </mappers>
3)将包内的映射器接口实现全部注册为映射器 ,类名和xml文件名必须一致,且在同一个包下面
<mappers> <package name="com.hys.mybatis.dao"/> </mappers>