12 mybatis的全局配置文件
张创琦 2022.03.13
案例中使用的 mybatis.xml 就是 Mybatis 的全局配置文件。
头部配置:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
1 配置的内容
配置文件的顶层结构如下:
configuration(配置)properties--属性:加载外部的配置文件,例如加载数据库的连接信息Settings--全局配置参数:例如日志配置typeAliases--类型别名typeHandlers 类型处理器objectFactory 对象工厂Plugins 插件:例如分页插件Environments 环境集合属性对象environment(环境变量)transactionManager(事务管理器)dataSource(数据源)Mappers 映射器:注册映射文件用
2 属性(properties)
以数据源中连接数据库的四个参数为例。
- 在 resources 目录创建 jdbc.properties 文件,文件名称可以自定义。
jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/ssm1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMTjdbc.username=rootjdbc.password=123456
- mybatis的全局配置文件引入属性文件(注意顺序)
<properties resource="jdbc.properties"/>
- 使用属性文件中的值
<dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource>
对比:原来的数据库参数传递方式:直接传递参数
<dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/ssm1? useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT"/><property name="username" value="root"/><property name="password" value="123456"/></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中的配置
<!--自定义类型别名--><typeAliases><!--对单个的实体类定义别名--><typeAlias type="com.kkb.pojo.Team" alias="Team"/><!--推荐写法:批量定义别名:扫描指定包下的所有类,同时别名定义为类名,别名的首字母大小写都可以--><package name="com.kkb.pojo"/></typeAliases>
4 映射器 mappers
将包内的映射器接口实现全部注册为映射器(推荐)
mybatis.xml
<!-- 注册映射文件 --><mappers><package name="com/kkb/pojo"/><package name="com/kkb/mapper"/></mappers>
5 dataSource 标签
Mybatis 的数据源分为三类:
UNPOOLED: 不使用连接池的数据源POOLED:使用连接池的数据源JNDI:使用JNDI实现的数据源前两个数据源都实现javax.sql.DataSource接口
6 事务
默认是进行手动提交的
<transactionManager type="JDBC"/>
该标签用于指定 MyBatis所使用的事务管理器。MyBatis 支持两种事务管理器类型:JDBC 与 MANAGED。
JDBC:使用JDBC的事务管理机制,通过Connection对象的 commit()方法提交,通过rollback()方法 回滚。默认情况下,mybatis将自动提交功能关闭了,改为了手动提交,观察日志可以看出,所以我们在程序中都需要自己提交事务或者回滚事务。
MANAGED:由容器来管理事务的整个生命周期(如Spring容器)。
SqlSessionFactory的openSession方法由重载,可以设置自动提交的方式。如果sqlSession = SqlSessionFactory.openSession(true);参数设置为true,再次执行增删改的时候就不需要执行session.commit()方法,事务会自动提交。
