总内容
mybatis 中 #{}和 ${}的区别是什么?
mybatis 有几种分页方式
mybatis 逻辑分页和物理分页的区别是什么?
mybatis 是否支持延迟加载?延迟加载的原理是什么?
mybatis 的一级缓存和二级缓存
mybatis 和 hibernate 的区别有哪些?
mybatis 有哪些执行器(Executor)
mybatis 分页插件的实现原理是什么
1 mybatis 中 #{}和 ${}的区别是什么?
#{}是预编译处理,${}是字符串替换; Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; Mybatis在处理${}时,就是把sql中的${}替换成变量的值; 使用#{}可以有效的防止SQL注入,提高系统安全性。
2 mybatis 有几种分页方式
1 数组分页2 sql分页3 拦截器分页4 RowBounds分页
3 mybatis 逻辑分页和物理分页的区别是什么?
物理分页速度上并不一定快于逻辑分页,逻辑分页速度上也并不一定快于物理分页。物理分页总是优于逻辑分页:没有必要将属于数据库端的压力加诸到应用端来,就算速度上存在优势,然而其它性能上的优点足以弥补这个缺点。
4 mybatis 是否支持延迟加载?延迟加载的原理是什么?
mybatis支持延迟加载 适用场景一对一,多对一 立即加载一对多,多对多 延迟加载
5 mybatis 的一级缓存和二级缓存
缓存目的是为了减少对数据库的访问次数,提升数据库的执行效率。
mybatis缓存机制包括:1.一级缓存 2.二级缓存
-
一级缓存
一级缓存也叫sqlSession级别的缓存 ,也就是在同一个sqlSession内执行两次多次相同结果的查询语句,只会在第一次时发 出sql查询数据库的数据,然后之后每次从一级缓存中查询数据返回。
二级缓存
是mapper级别的缓存,也就是多个sqlSession之间可以实现数据的共享。
二级缓存默认是不开启,所以在使用二级缓存时需要在做以下配置:
-
在mybatis-config.xml文件中开启二级缓存
-
在mapper.xml文件中开启二级缓存
-
1.让entity实现Serializable接口