MyBatis学习笔记
💧 💧 💧
全局配置文件…
核心文件设置
文件结构如下:
configuration 配置
- properties 属性
- settings 设置
- typeAliases 类型命名
- typeHandlers 类型处理器
- objectFactory 对象工厂
- plugins 插件
- environments 环境
- transactionManager 事务管理器
- dataSource 数据源
- databaseIdProvider 数据库厂商标识
- mappers 映射器
——这里所有的标签顺序不能改变——
一. properties属性
- 有利于文件移植
可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来配置
1). 新建一个db.properties文件
将四个连接字符串的数据在资源文件中通过键值对(key=value)的方式放置,不要任何符号,一条占一行
1 | driver=oracle.jdbc.OracleDriver |
2). 再全局配置文件中写入

1 | <!-- |
- 该方法优先于在配置文件中配置数据库信息
二. settings属性
1). 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
2). 包含如下的setting设置:
| 参数 | 简介 | 有效值 |
|---|---|---|
| cacheEnabled | 在全局范围内,启用或禁用缓存【是否支持二级缓存】 | true(默认)、false |
| lazyLoadingEnabled | 在全局范围内启用或禁用延迟加载。当禁用时,所有相关联的对象都将立即加载(热加载)。【是否支持延迟加载】 | true(默认)、false |
| aggressiveLazyLoading | 启用时,有延迟加载属性的对象,在被调用时将会完全加载所有属性(立即加载)。否则,每一个属性都将按需加载(即延迟加载)。【是否立即加载】 | true(默认)、false |
| multipleResultSetsEnabled | 允许或禁止执行一条单独的SQL语句后返回多条结果(结果集);需要驱动程序的支持 | true(默认)、false |
| autoMappingBehavior | 指定数据表字段和对象属性的映射方式。 NONE:禁止自动映射,只允许手工配置的映射 PARTIAL:只会自动映射简单的、没有嵌套的结果 FULL:自动映射任何结果(包含嵌套等)【自动映射方式】 | NONE、 PARTIAL(默认)、 FULL |
| defaultExecutorType | 指定默认的执行器。 SIMPLE:普通的执行器。 REUSE:可以重复使用prepared statements语句。 BATCH:可以重复执行语句和批量更新。 | SIMPLE(默认)、 REUSE、 BATCH |
| defaultStatementTimeout | 设置驱动器等待数据库回应的最长时间 | 以秒为单位的,任意正整数。无默认值 |
| safeRowBoundsEnabled | 允许或禁止使用嵌套的语句 | true、false(默认) |
| mapUnderscoreToCamelCase | 当在数据表中遇到有下划线的字段时,自动映射到相应驼峰式形式的Java属性名。例如,会自动将数据表中的stu_no字段,映射到POJO类的stuNo属性。 | true、false(默认) |
| lazyLoadTriggerMethods | 指定触发延迟加载的对象的方法 | equals、clone、hashCode、toString |
| logImpl | 日志显示方式 | value=“STDOUT_LOGGING“ |
1 | <!-- |
三. typeAliases别名处理器
类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类。
- 有利于优化,别名不区分大小写
1). 单个类起别名-typeAlias
1 | <typeAliases> |
2). 批量起别名-package
1 | <typeAliases> |
在批量起别名的情况下,可以使用@Alias注解为某个类型指定新的别名
1 | import org.apache.ibatis.type.Alias; |
3). MyBatis已存在的别名

四. typeHandlers类型处理器
自带的类型转换器
1). 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型
2). MyBatis中提供的类型处理器:

MyBatis3.4以前的版本需要我们手动注册这些处理器,以后的版本都是自动注册的,如需注册,需要下载mybatistypehandlers-jsr310,并通过如下方式注册。
自定义类型处理器
实体类Student : boolean stuSex
true:男
false:女
表student: number stuSex
1:男
0:女
1). 创建转换器:需要实现TypeHandler接口(实现接口TypeHandler接口,或继承BaseTypeHandler)
1 | package org.lanqiao.converter; |
2). 配置conf.xml
1 | <!-- |
五. plugins 插件机制
1). 简介
插件是MyBatis提供的一个非常强大的机制,我们可以通过插件来修改MyBatis的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行
2). 四大对象
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)
六. environments 环境配置
- MyBatis可以配置多种环境,比如开发、测试和生产环境需要有不同的配置
- 每种环境使用一个environment标签进行配置并指定唯一标识符
- 可以通过environments标签中的default属性指定一个环境的标识符来快速的切换环境
- environment:指定具体环境
id:指定当前环境的唯一标识 transactionManager、和dataSource都必须有
- transactionManager:事务处理方式。
- dataSource:数据源类型。
如果使用的 事务方式为 jdbc,则需要 手工commit提交,即session.commit();
1 | <!-- |
七. databaseIdProvider数据库厂商标识
1). 全局配置文件中
1 | <!-- |
2). SQL映射文件中使用
1 | <!-- databaseId:切换sql数据库环境 --> |
八. mappers映射器
1 | <!-- 将我们写好的sql映射注册到全局配置文件中--> |
1). mybatis注解
- CRUD注解写在接口方法上
使用注解sql语句不好维护
推荐:重要的Dao接口要用sql映射文件,简单的接口可以使用注解
1 | package com.AAA.Text.dao; |
2). 批量加载映射文件
- 映射文件名必须与接口同名,并放在与接口同一目录下
1 | <mappers> |
- 本文作者:
腾飞
- 本文链接:
https://www.tengfei.eu.org/article/dddea686.html
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!