导图社区 MyBatis思维导图
MyBatis知识点思维导图学习笔记,知识体系梳理。
社区模板帮助中心,点此进入>>
互联网9大思维
安全教育的重要性
组织架构-单商户商城webAPP 思维导图。
个人日常活动安排思维导图
域控上线
西游记主要人物性格分析
17种头脑风暴法
python思维导图
css
CSS
MyBatis
自定义持久层框架
传统JDBC问题
频繁创建数据库链接
使用连接池
SQL语句硬编码
配置文件
参数传递硬编码
结果集解析硬编码
反射、内省
自定义框架设计
使用端
SqlMapConfig.xml
存放数据源信息
Mapper.xml
Sql语句的配置文件信息
框架端
读取配置文件
Configuration
存放数据库基本信息
MappedStatement
SQL语句、statement类型、入参类型、出参类型
解析配置文件
SqlSessionFactoryBuilder
使用dom4j解析,封装至Configuration、MappedStatement
创建实现SqlSessionFactory的实现类DefaultSqlSession
SqlSessionFactory
openSession
获取sqlSesssion实例
SqlSession
封装CRUD方法
selectList
selectOne
封装JDBC对数据库的查询操作
自定义框架优化
问题
dao实现类硬编码
dao层过程模板代码重复
优化
代理模式创建接口的代理对象
MyBatis概念
概念
基于ORM(对象/关系数据库映射)的半自动轻量级持久层框架
优点
核心SQL由开发人员编写优化,sql和java分离,功能边界清晰
MyBatis基本应用
MyBatis环境搭建
添加Mybatis坐标
添加MySql驱动坐标
创建数据库表对应实体类
创建实体类Mapper映射文件
Mybatis配置文件
基本CRUD
插入insert
修改update
删除delete
查询selectList
API
DAO层传统开发
IDao+DaoImpl
DAO层代理开发
Mapper接口
接口的全限定名与Mapper.xml的namespace相同
接口方法名与Mapper.xml的每个statement的id相同
接口方法入参类型与Mapper.xml的每个sql的parameterType相同
接口方法出参和Mapper.xml的每个sql的resultType相同(集合和其中的泛型类型相同即可)
使用: Mapper接口对象=sqlSession.getMapper(Mapper接口.class);
动态SQL
作用
需根据查询条件选择不同的SQL语句,或将一些常用的SQL语句单独配置,在需要的地方引用
原理
首先采用条件标签描述需要表达的语义,维护在配置文件中;初始化过程中,解析配置文件中的标签,生成sql配置对应的抽象语法树;请求处理过程中,根据参数对象解释该抽象语法树,生成当前请求的动态SQL语句
if
<if test="条件">标签
where标签,拼接where并去掉第一个and
choose, (when,otherwise)
trim, (where, set)
foreach
<foreach>标签
<foreach collection="array" open="id in(" close=")" item="id" separator=","> 等效于 id in(id1,id2)
select
抽离多余sql
include标签引用
MyBatis配置文件
核心配置文件
configuration
properties
加载额外配置文件
settings设置
environments环境
environment环境变量
transactionManager事务管理器
JDBC
dataSource数据源
POOLED连接池
driver
url
username
password
mappers映射器
加载映射,同包同名
使用相对类路径的资源
使用mapper接口类路径
注册指定包下的所有mapper接口
typeAliases
resultType/paremeterType取别名
package按包批量起别名
基础s数据类型系统自带别名
Mybatis映射开发
一对一查询
实体中表示一方关系:实体
一对多查询
实体中表示多方关系:集合
多对多查询
双方实体中表示对方关系:集合
MyBatis注解开发
常用注解
@Insert新增
@Update更新
@Delete删除
@Select查询
关系映射注解
@Result结果集
代替<id>和<reuslt>
@Results多个结果集
代替<resultMap>
@One一对一结果集
代替<association>
@Many一对多结果集
代替<collection>
@CacheNamespace二级缓存
MyBatis缓存
MyBatis插件