2018-4-25
mybatis的全局配置文件mybatis-config.xml,配置内容如下:
properties(属性)
settings(全局配置参数)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
environment(环境子属性对象)
transactionManager(事务管理)
dataSource(数据源)
mappers(映射器)
1.properties属性:
将数据库连接参数单独配置在db.properties中,只需要在mybatis-config.xml中加在db.properties的属性值,
在mybatis-config.xml中就不用对jdbc连接参数进行硬编码了.
好处就是:mybatis-config.xml中的 配置信息很多,如果你的系统要进行升级更新的话,把这些JDBC连接参数单独写出来,有助于系统的维护.就不要在mybatis-config.xml配置文件中一个一个的去找了.
配置一个db.properties文件 跟mybatis-config.xml文件放在一起(不放在一起也可以,分类整理,把配置文件都放在一块)
方便对参数进行统一管理,其它xml可以引用该db.properties。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
然后在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> <!-- 配置 -->
<!-- 加载属性文件 -->
<properties resource="db.properties"></properties>
<typeAliases> <!--类型命名-->
<package name="com.kh.pojo"/> <!-- 包名 -->
</typeAliases>
<environments default="development"> <!-- 环境 -->
<environment id="development"> <!-- 环境变量 -->
<transactionManager type="JDBC"/> <!-- 事务管理器 -->
<dataSource type="POOLED"> <!-- 数据源,type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="com/kh/pojo/Category.xml"/>
<mapper resource="com/kh/mapper/CategoryMapper.xml"/>
</mappers>
</configuration>
写完db.properties文件然后改写<property>中的 value属性,最后别忘了加载属性文件!
<properties>标签中还可以配置一些属性:
<properties resource="db.properties">
<property name="" value=""/>
</properties>
在properties元素体内定义的属性首先被读取
然后会读取properties元素中,resource或url加载的属性,它会覆盖已读的同名属性
最后读取parameterType传递的属性,它会覆盖已读取的同名属性.
因此.通过parameterType传递的属性具有最高优先级,resource或url加载的属性次之,最低优先级的市properties元素体内定义的属性.
建议:不要在properties元素体内添加任何的属性值,只将属性值定义在properties文件中,
在properties文件中定义属性名要有一定的特殊性,如:xxxxx.xxxxx.xxxx
2.setting全局参数配置
mybatis框架在运行时可以调整一些运行参数
eg:开启二级缓存,开启延迟加载...... 需要的时候再加
3.typeAliases(别名)重点
需求:在mapper.xml中,定义了很多的statement,statement需要parameterType指定输入参数的类型,需要resultType指定输出映射结果类型.
如果在指定类型时,输入类型全路径,不方便开发.可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发.
红色画出的为全限定名.
针对pojo默认支持的别名.
parameterType="int" parameterType="Integer"是一样的.
parameterType="_byte" parameterType="byte"是一样的.
parameterType="java.lang.String" parameterType="String"是一样的.
定义方法:
1>针对单个定义别名
mybatis-config.xml中
<typeAliases>
<!-- 单个别名定义 type里写的是Category.java的类路径-->
<typeAlias alias="bieming" type="com.kh.pojo.Category"/>
</typeAliases>
使用typeAliases定义别名.Category.xml中
<select id="FindById" parameterType="int" resultType="bieming">
select * from category_ where id=#{id}
</select>
不使用typeAloases不定义别名,Category.xml中: 代码会简洁很多
<select id="FindById" parameterType="int" resultType="com.kh.pojo.Category">
select * from category_ where id=#{id}
</select>
2>批量定义别名
<typeAliases>
<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
<package name="com.kh.pojo"/>
<package name="其它包"/>
</typeAliases>
批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以)
Category.xml代码:
<select id="FindById" parameterType="int" resultType="Category">
select * from category_ where id=#{id}
</select>
这里的 resultType="Category" 中的 Category也可以写成 resultType="category"
在这里是不区分大小写的
4.typeHandlers 类型处理器
mybatis中通过typeHandlers完成jdbc类型和Java类型的转换,
通常情况下,mybatis提供的类型处理器已经可以满足日常的需求,不需要再自定义了.
无论是 MyBatis 在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处 理器被用来将获取的值以合适的方式转换成 Java 类型。下面这个表格描述了默认的类型处 理器。
你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。要这样做的话,简单实现 TypeHandler 接口,然后映射新的类型处理器类到ava 类型,还有可选的一个 JDBC 类型。