一、配置文件概述
Mybatis 配置文件两大类:1.Mybatis 主配置文件;2.Mybatis 的 mapper 文件
- Mybatis 主配置文件: 提供 Mybatis 全局设置的。包含的内容、日志、数据源、mapper 文件位置等信息。
- Mybatis 的 mapper 文件: 写 sql 语句的。一个表/Mapper接口一个 mapper 文件。
二、核心配置文件
核心配置文件 mybatis-config.xml,配置文件会影响 mybatis 的行为设置和属性信息
MyBatis 配置文档的顶层结构如下:
configuration(配置)
properties(属性)
property(属性信息)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
property(属性信息)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
在配置文件里面添加这些配置,要按顺序来添加,不然会报错
1. properties(属性)
properties(属性)是用来加载配置文件或声明属性信息的。
2. settings(设置)
在 MyBatis 中 settings 是最复杂的配置,它能深刻影响 MyBatis 底层的运行,但是在大部分情况下使用默认值便可以运行,所以在大部分情况下不需要大量配置它,只需要修改一些常用的规则即可,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器(Executor)类型等。
3. typeAliases(类型别名)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写
在Mybatis核心配置文件中配置(将Java类的全路径替换成一个别名,在xml使用):
<typeAliases>
<typeAlias alias="User" type="com.xxx.domain.User"/>
</typeAliases>
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,使用 Bean 的首字母小写的非限定类名来作为它的别名:
<typeAliases>
<package name="com.xxx.domain"/>
</typeAliases>
4. typeHandlers(类型处理器)
由于Java 类型和数据库的 JDBC 类型不是一一对应的(比如 String 与 varchar), 所以我们把 Java 对象转换为数据库的值,和把数据库的值转换成 Java 对象,需要经过 一定的转换,这两个方向的转换就要用到 TypeHandler。我们平时没有做任何关于 TypeHandler 的配置,为什么实体类对象里面的 String 属性,可以保存成数据库里面的 varchar 字段或者保存成 char 字段呢,这是因为 MyBatis 中已经内置了很多 TypeHandler。
typeHandlers(类型处理器)标签是用来重写或者自定义类型处理器的。
5. objectFactory(对象工厂)
当我们把数据库返回的结果集转换为实体类的时候,需要创建对象的实例,由于我 们不知道需要处理的类型是什么,有哪些属性,所以不能用 new 的方式去创建。在 MyBatis 里面,它提供了一个工厂类的接口,叫做 ObjectFactory,专门用来创建对象的实例。
typeHandlers(类型处理器)标签是用来重写或者自定义类型对象工厂的。
6. plugins(插件)
MyBatis 可以使用第三方的插件来对功能进行扩展,比如分页助手 PageHelper 是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据。
7. environments(环境配置)
mybatis 可以配置多套环境使用,将 SQL 映射到不同的数据库中。比如开发、测试和生产环境的数据库不同,需要不同的配置。但是,尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。有多少个环境,就需要多少个 SqlSessionFactory 实例。