5、MyBatis配置文件

configuration配置

  1. properties:属性
  2. settings:设置
  3. typeAliases:类型别名
  4. typeHandlers:类型处理器
  5. objectFactory:对象工厂
  6. plugins:插件
  7. environments:环境配置
  • environment:环境变量
  • transactionManager:事务管理器
  • dataSource(数据源
  1. databaseIdProvider:数据库厂商标识
  2. 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的加载顺序是:

  1. 读取​​properties标签​​内的​​属性​​;
  2. 读取​​properties标签​​引入的​​外部配置文件​​,覆盖之前读取的​​同名属性​​;
  3. 读取作为​​方法参数​​传递的属性,覆盖之前读取的​​同名参数​​。

即可以理解为,如果不考虑方法参数,优先读取外部配置文件中的属性。

<!-- 引入外部配置文件 -->
<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文件​​就作为方法参数传递,其中的属性即被加载读取。

【MyBatis】三、MyBatis配置文件_sql

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起别名,则别名为注解值。

@Alias("uu")
public class User{
...
}


别名可以用在原本使用 全限类名 的任何地方,例如:

<select id="listUsers" resultType="User">/*在配置文件中起的别名*/
select *
from mybatis.user
</select>


Java内建别名

以下是Java类型内建的类名别名,不区分大小写。

【MyBatis】三、MyBatis配置文件_配置文件_02

【MyBatis】三、MyBatis配置文件_类名_03

5.4、settings

常用设置

【MyBatis】三、MyBatis配置文件_类名_04

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