一、mybatis的架构类型
二、mybatis-config.xml的详细配置
鉴于前两章没有把全局配置文件单独拎出来分析,这一篇写出来弥补一下。
1) 为什么呢?我们先来看看mybatis的使用步骤:
1、配置mbatis的全局配置文件(包含数据源和外部的mapper);
2、创建sqlSessionFactory;
3、通过SqlSessionFactory创建sqlSession类;
4、调用sqlSession操作数据库CRUD;
5、调用session.commit()提交事务;
6、调用session.close();关闭会话
看看,全局配置是老大
2)mybatis的配置是有严格顺序的,设置(settings)和属性(properties)对mybatis的攻击力最大
来看configuration的配置信息
properties属性
settings设置
typeAliases类型别名
typeHandlers类型处理器
objectFactory对象工厂
plugins插件
environments环境
environment环境变量
transactionManager事务管理器
dataSource数据源
databaseldProvider数据库厂商标志
mappers映射器
a、 properties属性读取外部资源(比如数据库连接信息),资源路径有两种:resource--相对路径;url--绝对路径
b、settings 参数有很多,但是我们常用的只有4种,如下:
设置参数 | 描述 | 有效值 | 默认值 |
cacheEnabled | 该配置影响的所有映射器中配置的缓存的全局开关。 | true | false | true |
lazyLoadingEnabled | 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 | true | false | false |
aggressiveLazyLoading | 当启用时,带有延迟加载属性的对象的加载与否完全取决于对任意延迟属性的调用;反之,每种属性将会按需加载。 | true | false | true |
mapUnderscoreToCamelCase | 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 | true | false | False |
c、typeAliases类型处理器:使用频率高的是驼峰匹配,即从经典的数据库列名到经典的Java属性名的映射
也可以单独开启类型别名,但是如果有多个POJOs,每个都要去配置,很容易弄混淆,一般不推荐,直接开启包名扫描比较好
d、plugins插件,又称拦截器,可以应用在分页等方面
e、 environments 环境一般配置默认为development(开发者)模式,build也可以
f、 mappers一般是各类接口的动态实现类,属性为命名空间和CRUD语句
引入外部映射文件,有4种方式
方式一:resource,如果有多个就很麻烦了
方式二:file,引入硬盘目录下的文件(一般不用,不稳定)
方式三:class,配置接口的全路径
方式四:package,开启包名扫描
g、 typeHandlers类型处理器:主要用于数据库取值时,#{}该占位符对sql语句实现预处理,无需关注数据类型,mybatis自动 实现对数据类型的转换,应用该类型处理器;顺便讲一下${}取值,用于sql语句的拼接,需要自行判断数据类型,不能防止sql的注入。
三、Mapper.xml
映射文件里的属性就很明了了,namespace, resultType, parameterType,CRUD等等,请参考作者其它总结,本篇文章不作赘述。