
MyBatis面试真题
文章平均质量分 63
似来
一个老程序员
展开
-
一线大厂面试真题-MyBatis配置中的#{}和${}有什么区别
前几天,一位应届生去面试,被问到一个MyBatis中比较基础的问题,说MyBatis中的#号和$符号有什么区别?问题解答两者区别MyBatis提供到的#号和$号,都是实现动态SQL的一种方式,通过这两种方式把参数传递到XML之后在执行操作之前MyBatis会对这两种占位符进行动态解析。下面我给家详细介绍一下#号和$号的区别首先,来看#号,等同于JDBC里面的?号(占位符)。它相当于向预处理语句中设置参数,而中的SQL语句是预编译的,如。原创 2024-01-07 09:50:03 · 428 阅读 · 0 评论 -
一线大厂面试真题-MyBatis何时使用一级缓存,何时使用二级缓存
一个5年工作经验的小伙伴,去面某东被问到MyBatis何时使用一级缓存,何时使用二级缓存?去之前还特地复习了MyBatis的相关知识,想着自己用MyBatis用得比较熟练了,竟然在这道题上翻车了。1、设计思想MyBatis里面设计了两级缓存来提升数据的检索效率,避免每次数据的访问都需要去查询数据库。先来看一级缓存,它是SqlSession级别的缓存,也叫本地缓存,因为每个用户在执行查询的时候都需要使用SqlSession来执行,为了避免每次都去查数据库,原创 2024-01-07 09:44:43 · 432 阅读 · 0 评论 -
一线大厂面试真题-MyBatis是如何进行分页的
3、Interceptor 拦截器实现 ,通过拦截需要分页的 select 语句 ,然后在这个 sql 语句里面动态拼接分页关键字 ,从而实现分页查询。2、RowBounds 实现逻辑分页,也就是一次性加载所有符合查询条件的目标数据,根据分页参数值在内存中实现分页。1、逻辑分页,先查询出所有的数据缓存到内存,再根据业务相关需求,从内存数据中筛选出合适的数据进行分页。这种方式的好处,就是可以提供统一的处理机制,不需要我们再单独去维护分页相关的功能。框架,分页的实现逻辑无外乎两种,不管怎。原创 2024-01-06 15:48:17 · 408 阅读 · 0 评论 -
一线大厂面试真题-MyBatis中#{}和${}的区别是什么?
它相当于向PreparedStatement中的预处理语句中设置参数,而PreparedStatement中的sql语句是预编译的,SQL语句中使用了占位符,规定了sql语句的结构。以$和#最大的区别在于,前者是动态参数,后者是占位符,动态参数无法防止SQL。提供到的#号占位符和$号占位符,都是实现动态SQL的一种方式,通。并且在设置参数的时候,如果有特殊字符,会自动进行转义。的问题,所以在实际应用中,应该尽可能的使用#号占位符。另外,$符号的动态传参,可以适合应用在一些动态SQ。会对它进行特殊处理。原创 2024-01-06 15:45:03 · 507 阅读 · 0 评论 -
一线大厂面试真题-说一说MyBatis里面的缓存机制
工作4年的去面试,被问到MyBatis里面的缓存机制时,哆嗦了半天没回答上来。然后回来就在群里面抱怨面试太卷了,实际上,MyBatis多级缓存在开发中是会用到的一个功能,如果这个部分没弄清楚。问题解答(如图)MyBatis里面设计的二级缓存是用来提升数据的检索效率,避免每次数据的访问都需要去查询数据库。一级缓存是SqlSession级别的缓存,也叫本地缓存,因为每个用户在执行查询的时候都需要使用SqlSession来执行,为了避免每次都去查数据库,MyBatis。原创 2024-01-06 15:42:04 · 449 阅读 · 0 评论