【原创】Mybatis框架

2023-03-03 20:41:13 浏览数 (1)

Mybatis基础

1.Mybatis介绍

1、Mybatis是一个半自动ORM(对象关系映射框架),对比全自动ORM,Mybatis需要自己手写SQL语句,其内部封装了JDBC。 2、Mybatis可以使用xml或注解来配置实体类和数据库记录的映射关系。

2.Mybatis优点

1、Mybatis将sql语句写到Xml文件中,完成sql语句和代码的解耦(JDBC访问数据库会将代码直接写在java代码中)。 2、Mybatis底层提供了连接池,解决了JDBC频繁创建和关闭连接的操作。

3.Mybatis缺点

1、Sql语句编写工作量大,尤其当字段多,关联表时。 2、Sql语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

4.Mybatis使用场景

1、Mybatis专注于SQL本身,是一个足够灵活的Dao层解决方案。 2、对性能要求高,或者需求变化多的项目使用Mybatis。

5.#{}和${}的区别

#{}是采用预编译的形式执行sql语句,会自动在参数的值上添加''单引号。 {}是字符串拼接的形式执行sql语句,使用{}需要手动在参数的值上添加''单引号。

6.Mybatis的一二级缓存

1、一级缓存: 一级缓存是默认开启的,存储在sqlSession中存储,底层是个HashMap,key为hasecode sqlid sql语句,value为映射出的java对象。 (1)Mybatis一级缓存命中规则:

①Mybatis命中缓存要求两次查询操作的xml文件中的select标签的id一致。 ②Mybatis命中缓存要求两次查询sql语句的参数一致。 ③Mybatis命中缓存要求两次查询分页参数必须相同。 ④Mybatis命中缓存要求两次提交给数据库的sql语句完全相同。

(2)Mybatis一级缓存的生命周期: ①缓存的产生:

根据sqlSession调用的方法(Select开头的方法)就会产生缓存。

②缓存的销毁:

1)第一种情况sqlSession调用close()方法关闭连接,缓存消失。 2)第二种情况sqlSession调用了commit()方法,缓存会被清空。 3)第三种情况sqlSession调用了rollback()方法,缓存会被清空。 4)第四种情况执行了增加、更新、删除操作后,缓存会被清空。

2、二级缓存: 二级缓存需要手动开启,多个sqlSession可以共享数据 (1)Mybatis二级缓存命中规则:

①Mybatis命中缓存要求两次查询操作的xml文件中的select标签的id一致。 ②Mybatis命中缓存要求两次查询sql语句的参数一致。 ③Mybatis命中缓存要求两次查询分页参数必须相同。 ④Mybatis命中缓存要求两次提交给数据库的sql语句完全相同。

(2)Mybatis二级缓存的生命周期: ①缓存的产生:

sqlSession调用了close()或者commit()方法就会将数据保存到二级缓存中。

①缓存的销毁: 执行了增加、更新、删除操作后,缓存会被清空。 3、Mybatis清除缓存机制: (1)最近最少使用策略:移除最长时间不被使用的对象。 (2)先进先出策略:按照对象进入的缓存顺序来进行移除。 (3)软引用:基于GC和软引用规则移除缓存。 (4)弱引用:基于GC和弱引用规则移除缓存。

7.Mybatis的懒加载

懒加载:分布式查询,需要时再进行查询。在多表查询时提高查询效率。 Mapper的xml文件中使用collection 或 association标签完成对需要延迟加载数据的配置。 开启懒加载需要在mybatis.xml文件中开启懒加载功能,操作如下:

0 人点赞