12 mybatis的全局配置文件

张创琦 2022.03.13

案例中使用的 mybatis.xml 就是 Mybatis 的全局配置文件。

头部配置:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

1 配置的内容

配置文件的顶层结构如下:

  1. configuration(配置)
  2. properties--属性:加载外部的配置文件,例如加载数据库的连接信息
  3. Settings--全局配置参数:例如日志配置
  4. typeAliases--类型别名typeHandlers 类型处理器
  5. objectFactory 对象工厂
  6. Plugins 插件:例如分页插件
  7. Environments 环境集合属性对象
  8. environment(环境变量)
  9. transactionManager(事务管理器)
  10. dataSource(数据源)
  11. Mappers 映射器:注册映射文件用

2 属性(properties)

以数据源中连接数据库的四个参数为例。

  1. 在 resources 目录创建 jdbc.properties 文件,文件名称可以自定义。
  1. jdbc.driver=com.mysql.cj.jdbc.Driver
  2. jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
  3. jdbc.username=root
  4. jdbc.password=123456
  1. mybatis的全局配置文件引入属性文件(注意顺序)
  1. <properties resource="jdbc.properties"/>
  1. 使用属性文件中的值
  1. <dataSource type="POOLED">
  2. <property name="driver" value="${jdbc.driver}"/>
  3. <property name="url" value="${jdbc.url}"/>
  4. <property name="username" value="${jdbc.username}"/>
  5. <property name="password" value="${jdbc.password}"/>
  6. </dataSource>

对比:原来的数据库参数传递方式:直接传递参数

  1. <dataSource type="POOLED">
  2. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  3. <property name="url" value="jdbc:mysql://127.0.0.1:3306/ssm1? useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=GMT"/>
  4. <property name="username" value="root"/>
  5. <property name="password" value="123456"/>
  6. </dataSource>

3 类型别名 typeAliases

(看视频学习一下)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

别名 映射的类型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string String
byte Byte
long Long
short Short
int Integer
integer Integer
double Double
float Float
boolean Boolean
date Date
decimal BigDecimal
bigdecimal BigDecimal
object Object
map Map
hashmap HashMap
list List
arraylist ArrayList
collection Collection
iterator Iterator

mybatis.xml中的配置

  1. <!--自定义类型别名-->
  2. <typeAliases>
  3. <!--对单个的实体类定义别名-->
  4. <typeAlias type="com.kkb.pojo.Team" alias="Team"/>
  5. <!--推荐写法:批量定义别名:扫描指定包下的所有类,同时别名定义为类名,别名的首字母大小写都可以-->
  6. <package name="com.kkb.pojo"/>
  7. </typeAliases>

4 映射器 mappers

将包内的映射器接口实现全部注册为映射器(推荐)

mybatis.xml

  1. <!-- 注册映射文件 -->
  2. <mappers>
  3. <package name="com/kkb/pojo"/>
  4. <package name="com/kkb/mapper"/>
  5. </mappers>

5 dataSource 标签

Mybatis 的数据源分为三类:

  1. UNPOOLED: 不使用连接池的数据源
  2. POOLED:使用连接池的数据源
  3. JNDI:使用JNDI实现的数据源
  4. 前两个数据源都实现javax.sql.DataSource接口

6 事务

默认是进行手动提交的

  1. <transactionManager type="JDBC"/>

该标签用于指定 MyBatis所使用的事务管理器。MyBatis 支持两种事务管理器类型:JDBC MANAGED

JDBC:使用JDBC的事务管理机制,通过Connection对象的 commit()方法提交,通过rollback()方法 回滚。默认情况下,mybatis将自动提交功能关闭了,改为了手动提交,观察日志可以看出,所以我们在程序中都需要自己提交事务或者回滚事务。

MANAGED:由容器来管理事务的整个生命周期(如Spring容器)。

  1. SqlSessionFactoryopenSession方法由重载,可以设置自动提交的方式。
  2. 如果sqlSession = SqlSessionFactory.openSession(true);参数设置为true,再次执行增删改的时候就不需要执行session.commit()方法,事务会自动提交。