MyBatis 核心配置文件详解
# 1. MyBatis 核心配置文件
一个 MyBatis 的配置文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/powernode"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="CarMapper.xml"/>
<mapper resource="CarMapper2.xml"/>
</mappers>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DOCTYPE 后面跟的就是根标签的名字,这里就是 configuration。
第四行的 dtd 文件是对这个 XML 文件的格式规范约束,限制一个标签能有哪些子标签之类的信息
# 1)configuration
configuration:根标签,表示配置信息。
# 2)environments
environments:环境(多个),表示 MyBatis 可以配置多个数据源
- default 属性:表示默认使用哪个环境,填的是某一个 environment 的 id
# 3)environment
environment:具体的环境配置(主要包括:事务管理器的配置 + 数据源的配置)
- id:给当前环境一个唯一标识
- SqlSessionFactoryBuilder 在生成 factory 时,可以在指定 xml 配置文件的同时指定一个 environment
# 4)transactionManager
transactionManager:配置事务管理器,指定 MyBatis 具体使用什么方式去管理事务
- type 属性有两个值:
- JDBC:使用原生的 JDBC 代码来管理事务,此时 MyBatis 会实例化一个
JdbcTransaction
对象 - MANAGED:MyBatis 不再负责事务的管理,将事务管理交给其他的 JavaEE 容器来管理,例如 Spring,此时 MyBatis 会实例化一个
ManagedTransaction
对象
- JDBC:使用原生的 JDBC 代码来管理事务,此时 MyBatis 会实例化一个
# 5)dataSource
dataSource,数据源,为程序提供 Connection 对象。
DataSource 实际上是 JDK 的一套规范,位于 javax.sql.DataSource
中,凡是给程序提供 Connection 对象的都叫作数据源。
假如你写了一个东西,实现了 DataSource 这个规范,那么也可以对接到 MyBatis 中。
常见的数据库连接池有哪些:
- Alibaba 的 Druid
- C3P0
- HikariCP
- ...
该标签的 type 属性用来指定数据源的类型,也就是指定具体使用什么方式来获取 Connection 对象。type 属性有三个值:UNPOOLED | POOLED | JNDI
:
- UNPOOLED:不使用数据库连接池技术,每次请求都会创建新的 Connection 对象
- POOLED:使用 MyBatis 自己实现的数据库连接池
- JNDI:集成其他第三方的数据库连接池
填入不同的 type 值后,字标签需要配置的属性不同,这部分可以参考官方文档。
建议开启连接池,连接池的优点:
- 每一次获取连接都是从 pool 中拿,效率高
- 因为每一次只能从 pool 中拿,所以连接对象的创建数量是可控的
# 6)properties
MyBatis 借助这个标签使得可以让数据库的连接信息单独写到一个属性资源文件中。
具体做法可参考相关文档。
# 7)mapper
mapper 标签用来指定SQL映射文件的路径,包含多种指定方式,
resource
:从类的根路径下开始加载(更常用)url
:从指定的 URL 位置加载
<mappers>
<mapper resource="CarMapper.xml"/>
</mappers>
1
2
3
2
3
编辑 (opens new window)
上次更新: 2023/08/09, 13:08:47