Mybatis 面试题 真正的 offer 偏方 Java 基础 Java 高级
Mybatis 面试题 真正的 offer 偏方 Java 基础 Java 高级一、参考资料【25年新版Java面试场景题八股文真正的offer偏方跳槽面试你一定用得上Java面试丨Java场景题丨Java丨Java基础丨Java高级】 https://www.bilibili.com/video/BV1w44y1w7Zh/?p89share_sourcecopy_webvd_source855891859b2dc554eace9de3f28b4528二、笔记总结01、Mybatis 是如何进行分页的直接在 select 语句增加数据库提供的分页关键字使用 Mybatis 提供的 RowBounds 对象实现内存级别的分页。使用 Mybatis 提供的拦截器在 SQL 执行前动态拼接分页关键字。02、Mybatis 中 ${} 和 #{} 的区别是什么Mybatis 提供了 # $ 号两种占位符都是实现动态 SQL 的一种方式通过这两种方式可以把参数传递到 XML 里面。号占位符等同于 JDBC 中的 ? 号占位符# 号占位符可以防止 SQL 注入。$ 号占位符相当于直接把原始参数拼接到 SQL 里面无法防止 SQL 注入的问题。03、说一说 Mybatis 里面的缓存机制Mybatis 设计了二级缓存这样一个机制来提升数据检索效率避免每一次数据检索都去查询数据库。一级缓存是 SqlSession 级别的缓存没个用户都需要通过 SqlSession 去查询数据库为了避免每次都查询数据库Mybatis 把数据缓存到 SqlSession 的本地缓存中。一级缓存无法做到跨 SqlSession 级别的缓存因此引入了二级缓存设计当多个 SqlSession 查询数据的时候只要有一个用户拿到了数据就会放入二级缓存中其它的 SqlSession 就可以直接从二级缓存加载数据。04、Mybatis 何时使用一级缓存何时使用二级缓存同 03