5、MyBatis配置文件
configuration配置
- properties:属性
- settings:设置
- typeAliases:类型别名
- typeHandlers:类型处理器
- objectFactory:对象工厂
- plugins:插件
- environments:环境配置
- environment:环境变量
- transactionManager:事务管理器
- dataSource(数据源
- databaseIdProvider:数据库厂商标识
- mappers:映射器
5.1、enviroments
MyBatis 可以配置多种环境,有助于将 SQL 映射应用于多种数据库之中。例如,开发、测试和生产环境需要有不同的配置。
注意:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
- 环境 ID:默认
development
- 事务管理器:默认
JDBC
- 数据源:默认
POOLED
<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>
5.2、properties
可以在properties
标签内部增加属性,也可以引入外部配置文件
说明:如果一个属性在多个地方进行了配置,MyBatis的加载顺序是:
- 读取
properties标签
内的属性
; - 读取
properties标签
引入的外部配置文件
,覆盖之前读取的同名属性
; - 读取作为
方法参数
传递的属性,覆盖之前读取的同名参数
。
即可以理解为,如果不考虑方法参数,优先读取外部配置文件中的属性。
<!-- 引入外部配置文件 -->
<properties resource="资源路径"/>
<!-- 增加属性 -->
<property name="" value=""/>
</properties>
设置好的属性,可以在整个mybatis-config
配置文件中用${value}
来替代属性值,这些属性值可以动态配置,提高了配置的灵活性。如:
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
关于上述说明中第3点——方法参数的解释:
在构建SqlSessionFactory
的时候,调用含Properties参数
的构造方法。
此时Properties文件
就作为方法参数传递,其中的属性即被加载读取。
5.3、typeAliases
类型别名可为 Java 类型设置一个缩写名字。仅用于 XML 配置,可以降低冗余的全限定类名书写。
typeAliases
为Java类型
自定义一个别名。
<typeAliases>
<typeAlias alias="User" type="indi.jaywee.pojo.User"/>
</typeAliases>
package
扫描包:指定一个包名,MyBatis
会在指定的包下搜索JavaBean
。
使用Bean
的首字母小写
类名作为其别名,比如User
的别名会是user
。
<typeAliases>
<package name="indi.jaywee.pojo"/>
</typeAliases>
在指定包名的前提下,如果使用注解为Bean起别名,则别名为注解值。
"uu")(
public class User{
...
}
别名可以用在原本使用 全限类名
的任何地方,例如:
<select id="listUsers" resultType="User">/*在配置文件中起的别名*/
select *
from mybatis.user
</select>
Java内建别名
以下是Java类型内建的类名别名,不区分大小写。
5.4、settings
常用设置
5.5、mappers
编写Mapper.xml
后要到配置文件中注册,否则会报错。
1、相对于类路径的资源引用
<mappers>
<mapper resource="indi/jaywee/dao/UserMapper.xml"/>
</mappers>
2、接口的完全限定类名
要求:Mapper接口
和对应Mapper.xml
必须同名且在同一个包下。
<mappers>
<mapper class="indi.jaywee.dao.UserMapper"/>
</mappers>
3、将包内的映射器接口实现全部注册为映射器
要求:Mapper接口
和对应Mapper.xml
必须同名且在同一个包下。
<mappers>
<package name="indi.jaywee.dao"/>
</mappers>
5.6、其他配置
目前阶段较少使用。
- typeHandlers
- objectFactory
- plugins
- mybatis-generator-core
- mybatis-plus
- 通用mapper
- databaseProvider