Mybatis

本文深入探讨了MyBatis框架的使用与原理,包括环境搭建、核心设计模式、自定义实现、CRUD操作、动态SQL、多表操作、缓存机制等内容,适合初学者和进阶开发者。

1、Mybatis概述

在这里插入图片描述

2、Mybaits入门环境搭建

pom.xml导入jar包依赖
在这里插入图片描述
配置文件
在这里插入图片描述
在这里插入图片描述

3、入门案例

1、读取配置文件(InputStream、Resource.getResourceStream())
2、创建SqlSessionFactory工厂(SqlSessionFactoryBuilder、SqlSessionFactory、build())
3、使用工厂生产SqlSession对象(openSession()、SqlSession)
4、使用SqlSession创建Dao接口代理对象(Session.getMapper())
5、使用代理对象执行方法
6、释放资源

在这里插入图片描述
功能等价于下面
在这里插入图片描述

4、Mybatis入门案例中的设计模式(构建者模式、工厂模式、代理模式)

在这里插入图片描述

5、注解实现Mybatis入门案例

@Select()
在这里插入图片描述
配置文件变化
在这里插入图片描述

6、自定义Mybatis分析

Mybatis在使用代理dao的方式实现增删改查时做了那两件事(创建代理对象、在代理对象中使用selectList)
执行查询分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建代理对象分析Proxy.nextProxyInstance(x,x,x)
在这里插入图片描述

7、自定义Mybatis的编码实现

在这里插入图片描述
(1)创建Resources类
在这里插入图片描述
(2)创建SqlSessionFactoryBuilder类
在这里插入图片描述

(3)创建一个SqlSessionFactory接口
在这里插入图片描述
(4)创建一个SqlSesion接口
在这里插入图片描述
(5)创建一个Configration配置类
在这里插入图片描述
(6)创建一个Mapper类
在这里插入图片描述
(7)创建SqlSessionFactory接口的实现类
在这里插入图片描述
(8)创建SqlSession实现类
在这里插入图片描述
在这里插入图片描述
(9)创建自定义代理类
在这里插入图片描述
(10)创建一个注解
@Retetion生命周期、@Target出现的位置
在这里插入图片描述

8、Mybatis的CRUD

在这里插入图片描述
like模糊查询时
在这里插入图片描述
配置插入数据后获取keyId
在这里插入图片描述
queryVO查询(OGNL表达式)
在这里插入图片描述
在这里插入图片描述
实现和实体类属性名的映射关系
在这里插入图片描述
PrepareStatement对象
在这里插入图片描述

9、properties、typeAliases、pagage标签

在这里插入图片描述
在这里插入图片描述

10、Mybaties连接池及事务

连接池
(1)连接池可以减少我们获取连接所消耗的时间
(2)连接池就是用于存储连接的一个容器
(3)容器其实就是一个集合对象,改集合必须是线程安全的,不能两个线程拿到统一连接
(4)该集合还必须实现队列的特性:先进先出
Mybatis的连接池
在这里插入图片描述
在这里插入图片描述
事务自动提交
在这里插入图片描述

11、动态SQL


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

12、Mybatis多表操作

(一对一)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(一对多)
在这里插入图片描述
(多对多)
在这里插入图片描述

13、JNDI(Java命名和接口)

在这里插入图片描述

14、Mybatis缓存

(1)延迟加载和立即加载
在这里插入图片描述
懒加载配置
在这里插入图片描述
在这里插入图片描述
一对一延迟加载
在这里插入图片描述
(缓存)
缓存-----存在于内存的临时数据
为什么用缓存-----------减少和数据库的交互次数,提高执行效率
什么样的数据用缓存---------经常查询并且不经常改变、数据的正确与否对最总结过影响不大的(缓存数据和数据库不同步)
不适用与缓存----------经常改变的数据、数据的正确与否对最终结果影响比较大、例如:商品的库存、银行的汇率、股市的评价

(Mybatis的一级缓存)
一级缓存-----------它指的是Mybatis中SqlSession对象的缓存,当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供的一块区域当中,该区域是一个Map。当我们再次查询同样的数据,mybatis会先去sqlSession中查询是否有,有的话就直接拿来用。当SqlSession对象失效时,mybaitis一级缓存也消失了

(触发清空一级缓存)
一级缓存是SqlSession范围的缓存,当调用Sqlsession的修改、添加、删除、commit()、close()等方法时就会清空一级缓存
(Mybatis的二级缓存)
二级缓存-------------它指的是Mybatis中SqlSessionFactory对象的缓存,由同一个SqlSessionFactory对象创建的SqlSession共享其缓存
在这里插入图片描述
开启二级缓存
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值