淳化网站制作,免费招聘网站哪个好,网站类别选择,如何通过网站标题找网站15. 说一下Mybatis的一级缓存和二级缓存#xff1f;【重点】
考核点#xff1a;Mybatis缓存。
答#xff1a;
Mybatis的一级缓存是指SqlSession#xff0c;一级缓存的作用域是SqlSession#xff0c;Mybaits默认开启一级缓存#xff1b;
在同一个SqlSession中#xf…15. 说一下Mybatis的一级缓存和二级缓存【重点】
考核点Mybatis缓存。
答
Mybatis的一级缓存是指SqlSession一级缓存的作用域是SqlSessionMybaits默认开启一级缓存
在同一个SqlSession中执行相同的SQL查询时第一次会去查询数据库并写在缓存中第二次会直接从缓存中取
SqlSession执行insert、update、delete等操作commit后会清空该SqlSession缓存。
二级缓存是mapper级别的Mybatis默认是没有开启二级缓存的
第一次调用mapper下的SQL去查询用户的信息查询到的信息会存放该mapper对应的二级缓存区域
第二次调用namespace下的mapper映射文件中相同的sql去查询用户信息会去对应的二级缓存内取结果
如果调用相同namespace下的mapepr映射文件中增删改sql并执行了commit操作此时该缓存会清空。
总结
一级缓存同会话很少会重复查询实用场景少
二级缓存同namespace下表级别缓存执行更新操作即清空缓存所以实际应用场景一般使用三级缓存。
16. Mybatis动态SQL标签有哪些分别是做什么的【掌握】
考核点动态SQL
答
if 标签
if标签通常用于WHERE语句、UPDATE语句、INSERT语句中通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值。
foreach标签
foreach标签主要用于在sql中对集合进行迭代。也常用到批量删除、添加等操作中。
choose标签
MyBatis提供了choose 元素按顺序判断when中的条件出否成立如果有一个成立则choose结束。
当choose中所有when的条件都不满则时则执行 otherwise中的sql。
类似于Java 的switch 语句choose为switchwhen为caseotherwise则为default。
where标签
如果where标签包含的标签中有返回值的话它就插入一个where。
此外如果标签返回的内容是以AND或OR开头的则它会剔除掉。
set标签
使用set标签可以将动态的配置set关键字和剔除追加到条件末尾的任何不相关的逗号。
trim标签
格式化输出也可以通过trim标签设定或忽略前后缀来实现格式化输出。
sql标签
当多种类型的查询语句的查询字段或者查询条件相同时可以将其定义为SQL片段方便调用。
include标签
用于引用定义的SQL片段。
17. 动态SQL中使用where标签与直接写where关键字有什么区别【掌握】
考核点动态SQL
答
where关键字是SQL语句中的where子句在Mybatis动态SQL中若直接用where子句的话可能会导致SQL语法错误查询失败
where标签为MyBatis的动态语句系统自动生成where子句并且会自动去掉生成语句前面多出的and|or子串。
18. 循环标签有哪些属性各自的作用是什么【掌握】
考核点动态SQL
答
foreach循环标记
collection设置循环的集合、注意接口方法参数需要使用Param()指定取值的key,如果不设置默认keylist
item设置循环中取值一个元素的变量名称
separator设置语句的分割符号
open设置语句开始部分的子串
close设置语句结束部分的子串
index取出元素的索引。
19. Hibernate和Mybatis的区别【重点】
相同点
都属于ORM 框架
都是对JDBC 的封装
都属于持久层的框架。
不同点
Hibernate 是面向对象的Mybatis是面向SQL的
Hibernate全自动的ORMMybatis是半自动的ORM
Hibernate查询映射实体对象必须全字段查询Mybatis可以不用
Hibernate有级联操作Mybatis则没有
Hibernate编写HQL查询数据库大大降低了对象和数据库的耦合性Mybatis提供动态SQL需要手写SQL与数据库之间的耦合度取决于程序员所写的SQL的方法所以Hibernate的移植性要远大于Mybatis
Hibernate有方言跨数据库Mybatis 依赖于具体的数据库
Hibernate拥有完整的日志系统Mybatis 则相对比较欠缺
20. MyBatis的优点【重点】
答
基于SQL语句编程相当灵活不会对应用程序或者数据库的现有设计造成任何影响SQL写在XML里解除SQL与程序代码的耦合便于统一管理提供XML标签支持编写动态SQL语句并可重用
与JDBC相比减少了50%以上的代码量消除了JDBC 大量冗余的代码不需要手动开关连接
很好的与各种数据库兼容因为MyBatis 使用JDBC 来连接数据库所以只要JDBC支持的数据库MyBatis都支持
能够与Spring很好的集成
提供映射标签支持对象与数据库的ORM字段关系映射提供对象关系映射标签支持对象关系。
21. MyBatis框架的缺点【重点】
答
SQL语句的编写工作量较大尤其当字段多、关联表多时对开发人员编写SQL语句的功底有一定要求
SQL语句依赖于数据库导致数据库移植性差不能随意更换数据库。