腾讯 T4Java 大牛连续半个月每天熬夜到凌晨三四点,竟然就只是为了写一份 MyBatis 源码学习笔记
MyBatis内容介绍
本文档为纯手打,能够让你快速熟悉掌握MyBatis。转发+关注,然后添加VX(tkzl6666)即可获得《MyBatis源码笔记》的免费领取方式!
第一部分:MyBatis入门
1.什么是Mybatis?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。是一个基于Java的持久层框架。
2.为什么我们要用Mybatis?
无论是Mybatis、Hibernate都是ORM的一种实现框架,都是对JDBC的一种封装!
3.MyBatis快速入门
其实我们已经学过了Hibernate了,对于Mybati入门其实就非常类似的。因此就很简单就能掌握基本的开发了.
4.Mybatis工作流程
通过Reader对象读取Mybatis映射文件
通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象
获取当前线程的SQLSession
事务默认开启
通过SQLSession读取映射⽂件中的操作编号,从而读取SQL语句
提交事务
关闭资源
5. 完成CRUD操作
我们在上面中已经简单知道了Mybatis是怎么使用的以及工作流程了,这次我们使用Mybatis来完成CRUD的操作,再次巩固Mybatis的开发步骤以及一些细节
包与类之间的结构
6. 动态SQL
何为动态SQL??回顾⼀下我们之前写的SSH项⽬中,有多条件查询的情况,如下图
7. 入门总结
Mybatis的准备工作与Hibernate差不多,都需要一个总配置文件、一个映射文件。
Mybatis的SQLSession工具类使用ThreadLocal来对线程中的Session来进行管理。
Mybatis的事务默认是开启的,需要我们手动去提交事务。
Mybatis的SQL语句是需要手写的,在程序中通过映射文件的命名空间.sql语句的id来进行调用!
在Mybatis中,增删改查都是Mybatis需要我们自己写SQL语句的,然后在程序中调用即可了。SQL由于是我们自己写的,于是就相对Hibernate灵活一些。
如果需要传入多个参数的话,那么我们一般在映射文件中用Map来接收。
第二部分:Mybatis配置信息
1. 映射文件
在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句
2. 配置文件
别名
3. 配置相关总结
在程序中调用的SQL语句是由映射文件的命令空间+sql片段的id所组成的。它内部会生成一个Statement对象的。
在使用别名的时候,可以指定包名,在使用总配置文件加载映射文件时,也可以指定包名。
主键如果需要返回的话,使用selectKey 标签即可。UUID也可以返回。在Oracle的话,是使用序列来返回自动增长的主键的。
占位符有两种,一种是解析传递进来的参数数据、一种是原样输出传递进来的数据。
第三部分:关联映射
1. Mybatis【多表连接】
我们在学习Hibernate的时候,如果表涉及到两张的话,那么我们是在映射文件中使用 <set> .. <manyto-one> 等标签将其的映射属性关联起来的...那么在我们Mybatis中又怎么做呢???
2. 关联映射总结
对于Mybatis的多表连接就非常简单了,由于SQL语句全是由我们自己写,如果我们返回的数据类型在当前的实体中是不够封装的话,那么我们只要再关联对应的映射属性就行了!
一键三连+评论,然后添加VX(tkzl6666)即可免费领取
第四部分:缓存+Mapper代理+逆向工程
1. 前言
本文主要讲解Mybatis的以下知识点:
Mybatis缓存
一级缓存
二级缓存
与Ehcache整合
Mapper代理
使用Mapper代理就不用写实现类了
逆向工程
自动生成代码
2. Mybatis缓存
缓存的意义将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。
3.MyBatis和ehcache缓存框架整合
ehcache是专门用于管理缓存的,Mybatis的缓存交由ehcache管理会更加得当
在mybatis中提供一个cache接口,只要实现cache接口就可以把缓存数据灵活的管理起来
4. Mapper代理方式
Mapper代理方式的意思就是:程序员只需要写dao接口,dao接口实现对象由mybatis自动生成代理对象。
5. Mybatis解决JDBC编程的问题
6.Mybatis逆向工程
Mybatis逆向工程实际上就是想自动生成对应的代码,不用自己写对应的映射文件和接口
7.本章总结
Mybatis的一级缓存是sqlSession级别的。只能访问自己的sqlSession内的缓存。如果Mybatis与Spring整合了,Spring会自动关闭sqlSession的。所以一级缓存会失效的。
一级缓存的原理是map集合,Mybatis默认就支持一级缓存
二级缓存是Mapper级别的。只要在Mapper命名空间下都可以使用二级缓存。需要我们自己手动去配置二级缓存
Mybatis的缓存我们可以使用Ehcache框架来进行管理,Ehcache实现Cache接口就代表使用Ehcache来环境Mybatis缓存。
由于之前写的DaoImpl是有非常多的硬编码的。可以使用Mapper代理的方式来简化开发
第五部分:Mybatis整合Spring
1. Mybatis与Spring整合
既然我们已经学了Mybatis的基本开发了,接下来就是Mybatis与Spring的整合了!
2. 总结
web.xml加载Spring配置文件
Spring配置文件配置数据连接池,SessionFactory、事务、扫描注解
Mybatis中配置文件、实体以及相对应的映射文件
将映射文件加人到总配置文件中。
第六部分:Mybatis常见面试题
本文档为纯手打,能够让你快速熟悉掌握MyBatis。转发+关注,然后私信回复 “MB” 即可获得《MyBatis源码笔记》的免费领取方式!
MyBatis笔记脑图
评论 (1 条评论)