文章目录
- 1. 核心配置文件
- 2. 环境配置(environments)
- 3. 属性(properties)
- 4. 类型别名(typeAliases)
- 5. 设置(settings)
- 6. 其他配置
- 7. 映射器(mappers)
本文章涉及环境版本:
- mysql 5.7
- Mybatis 3.5.x
- Maven 3.6.x
- JDK 1.8
项目代码仓库:
https://github.com/Gang-bb/Study-Record/tree/main/bzhan-mybatis-study
需要clone整个bzhan-mybatis-study项目
(整体是一个maven多module工程)
该文章对应:《bzhan-mybatis-study02 》module项目
1. 核心配置文件
- 配置文件官方推荐命名:mybatis-config.xml. 当然也可以自己命名。
- MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
2. 环境配置(environments)
MyBatis 可以配置成适应多种环境
不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
Mybatis默认的事务管理器就是 JDBC , 连接池 : POOLED

3. 属性(properties)
我们可以通过properties属性来实现引用配置文件
这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。【db.properties】
- 创建一个db.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis-study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPubicKeyRetrieval=true
username=root
password=root
- mybatis-config.xml中引入db.properties中的属性
- 全部在db.properties文件中定义属性
- 在标签中配置
PS:如果db.properties文件和标签定义了同名属性并且同时 被引用,优先使用db.properties文件中的属性值!
4. 类型别名(typeAliases)
- 类型别名是为 Java 类型设置一个短的名字。
- 存在的意义仅在于用来减少类完全限定名的冗余。
- mybatis-config.xml中声明类别名
- 方式一:直接定位到某个类
使用:
- 方式二:扫描一整个包
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:
扫描实体类的包,它的默认别名就为这个类的 类名,首字母小写(大写也行,建议小写)!
使用:
(这里user或User都行)
在实体类比较少的时候,使用第一种方式。
如果实体类十分多,建议使用第二种。
方式一可以DIY别名,方式二则不行,如果非要改,需要在实体上增加注解@Alias
例如:
使用:
5. 设置(settings)
几个重要设置:
6. 其他配置
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins插件
- mybatis-generator-core
- mybatis-plus
- 通用mapper
7. 映射器(mappers)
- 不要使用第二个
- 如果把mapper的xml文件写在resource目录下,就不能用第三种方式注册
无法注册!
- 如果使用class文件绑定注册
<mappers>
<mapper class="com.gangbb.model.dao.UserMapper"/>
</mappers>
注意点:
- 接口和他的Mapper配置文件必须同名!
- 接口和他的Mapper配置文件必须在同一个包下!
- 使用扫描包进行注入绑定
<mappers>
<package name="com.gangbb.model.dao"/>
</mappers>
注意点:
- 接口和他的Mapper配置文件必须同名!
- 接口和他的Mapper配置文件必须在同一个包下!