Mybatis个人简单理解

Mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

配置文件中需要配置数据源、数据库信息、配置SqlSession,标明mapper映射,注解驱动
mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来更加的方便,可以灵活的编写sql,支持编写动态sql,将业务逻辑层和数据访问逻辑分离,更易维护。

一级缓存

一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同一个sqlSession中,不同的sqlSession中的缓存是互相不能读取的。

一级缓存的工作原理:
在这里插入图片描述
类似于redis缓存:第一次查询数据,先查缓存,如果有记录,直接读取;如果没有记录,再查数据库,同时写入缓存。更新数据同理,更新数据先更新缓存,再更新数据库;亦或者先删除缓存,修改完数据库再次写入缓存。
二级缓存原理:

在这里插入图片描述
二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。UserMapper有一个二级缓存区域(按namespace分),其它mapper也有自己的二级缓存区域(按namespace分)。每一个namespace的mapper都有一个二级缓存区域,两个mapper的namespace如果相同,这两个mapper执行sql查询到数据将存在相同的二级缓存区域中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章