MyBatis 面试题

MyBatis 中 #{}和 ${}的区别是什么?
  • #{}是预编译处理,会将#{}替换成?号,调用PreparedStatement的set方法来赋值,可以有效的防止SQL注入,提高系统安全性。
  • ${}是字符串替换,会把sql中的${}替换成变量的值,一般用于传入数据库对象,比如表名。
  • 能用#的情况下就不要使用$。
MyBatis 有几种分页方式?
  • SQL分页、MyBatis分页插件Pagehelper、MyBatis-Push分页、RowBounds分页。
RowBounds 是一次性查询全部结果吗?
  • 不是、可以按照分页条件查询。
MyBatis 逻辑分页和物理分页的区别是什么?
  • 逻辑分页:逻辑分页利用游标分页,好处是所有数据库都统一,坏处就是效率低。
  • 物理分页:物理分页就是数据库本身提供了分页方式,如MySQL的limit,oracle的rownum ,好处是效率高,不好的地方就是不同数据库有不同的搞法。
MyBatis 是否支持延迟加载?延迟加载的原理是什么?
  • mybatis支持延迟加载
  • 适用场景
    一对一,多对一 立即加载
    一对多,多对多 延迟加载
说一下 MyBatis 的一级缓存和二级缓存?
  • 一级缓存:也叫sqlSession级别的缓存 ,也就是在同一个sqlSession内执行两次多次相同结果的查询语句,只会在第一次时发 出sql查询数据库的数据,然后之后每次从一级缓存中查询数据返回。
  • 二级缓存:是mapper级别的缓存,也就是多个sqlSession之间可以实现数据的共享。二级缓存默认是不开启,所以在使用二级缓存时需要自行配置:
    在mybatis-config.xml文件中开启二级缓存:<setting name="cacheEnalbled" value="true">
    在mapper.xml文件中开启二级缓存:<cache/>
SpringBoot+Mybatis如何在控制台打印sql语句?
- properties:logging.level.×××.mapper=debug
- yml:logging:
-       level: 
- 		 ×××: 
-         mapper: debug
- ##其中×××为你的mapper路径包
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值