Java Mybatis面试题解析(下)

15. 说一下Mybatis的一级缓存和二级缓存?【重点】

考核点:Mybatis缓存。

答:

Mybatis的一级缓存是指SqlSession,一级缓存的作用域是SqlSession,Mybaits默认开启一级缓存;

在同一个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为switch,when为case,otherwise则为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,如果不设置,默认key="list";

item:设置循环中取值一个元素的变量名称;

separator:设置语句的分割符号;

open:设置语句开始部分的子串;

close:设置语句结束部分的子串;

index:取出元素的索引。

19. Hibernate和Mybatis的区别?【重点】

相同点:

都属于ORM 框架;

都是对JDBC 的封装;

都属于持久层的框架。

不同点:

Hibernate 是面向对象的,Mybatis是面向SQL的;

Hibernate全自动的ORM,Mybatis是半自动的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语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第100讲:MHA+Atlas实现MySQL主从复制读写分离分布式集群

文章目录 1.Atlas读写分离简介2.搭建MHA高可用MySQL主从复制集群3.部署配置Atlas读写分离中间件3.1.安装Atlas读写分离中间件3.2.配置读写分离3.3.启动Atlas读写分离 4.读写分离集群测试5.生产环境中创建一个用户通过Atlas使用6.Atlas通过管理接口实现在线管理7.Atlas自动分表 …

Oracle中TimeStamp和Date的区别

在Oracle数据库中&#xff0c;DATE和TIMESTAMP数据类型都是用于存储日期和时间信息&#xff0c;但它们之间有几个重要的区别&#xff1a; 精度不同&#xff1a; DATE数据类型能存储日期和时间到秒的精度&#xff0c;格式通常是YYYY-MM-DD HH24:MI:SS&#xff0c;并且它总是包含…

华为OD机试真题-开源项目热榜-2023年OD统一考试(C卷)---python免费

题目&#xff1a; 考察内容&#xff1a; 理解题目双排序 代码&#xff1a; """ 题目分析&#xff1a; 计算热度值&#xff0c;进行降序排序&#xff0c;热度值一样&#xff0c;字母小写&#xff0c;字典排序输入&#xff1a; 项目个数N, int 0-100 权重列表…

高企详细流程

一、自我评价 企业根据《认定办法》和《工作指引》进行自我评价&#xff0c;初步判断是否达到认定条件的要求。 二、注册登记 企业登录"高新技术企业认定管理工作网"&#xff0c;按要求填写《企业注册登记表》&#xff0c;并通过网络系统提交至认定机构。认定机构…

快速部署华为云WAF实现Web应用安全防护

通常&#xff0c;用户将web应用暴露在公网上&#xff0c;不做任何准备或者安全措施可能会受到黑客的注入入侵攻击导致网站核心数据被脱库泄露。以及木马上传网页篡改&#xff0c;导致网站公信力受到影响。本文九河云将为您介绍如何通过华为云WAF应用防火墙实现web应用安全防护&…

[office] excel如何设置图片大小 #其他#其他

excel如何设置图片大小 如果你是EXCEL初学者&#xff0c;因为EXCEL功能强大&#xff0c;刚开始肯定很难记住许多的操作技巧&#xff0c;这里讲一下如何插入图片并根据需要改变图片的大小。下面让小编为你带来excel设置图片大小的方法。 excel设置图片大小步骤&#xff1a; 步骤…

解锁创意灵感,探索FlutterExampleApps项目的奥秘

解锁创意灵感&#xff0c;探索FlutterExampleApps项目的奥秘 项目简介 FlutterExampleApps项目是一个包含各种示例应用链接的仓库&#xff0c;旨在演示Flutter应用开发中的各种功能、特性和集成。 项目包含了以下几个部分&#xff0c;每个部分都涵盖了不同的内容和主题&…

Day23--learning English

一、积累 1.straw 2.umami | tangy | bland 3.lactose dairy 4.fatigue 5.stumble | curb 6.pore 7.toll 8.arrear 9.robe 10.stylish 11.dash 12.mischief 13.ranch 14.sponsorship 15.podcast 16.villian 17.clutch 18.envision 二、练习 1.牛津原译 1.straw /strɔː/ 1…

Unity3D 实现基于物理引擎的绳子关节解析详解

前言 在游戏开发中&#xff0c;有时候我们需要实现绳子关节效果&#xff0c;比如在射击游戏中射击绳子&#xff0c;或者在平衡游戏中使用绳子作为支撑。本文将详细介绍如何使用Unity3D的物理引擎实现绳子关节效果。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希…

为python新手准备的练习题目

1、输入一个整数并打印 if 输入年级&#xff0c;如果大于18岁&#xff0c;输出 已成年&#xff0c;否则输出未成年 如果大于等于90&#xff0c;输出“优秀”&#xff0c;如果大于等于70&#xff0c;输出“良好”&#xff0c; 如果大于等于60&#xff0c;输出“及格”&#…

pytorch数学运算

目录 1. pytorch的数学运算包括2. 基本运算3. matmul4. power sqrt rsqrt5. exp log6. 近似值7. clamp 1. pytorch的数学运算包括 ▪Add/minus/multiply/divide ▪Matmul ▪Pow ▪Sqrt/rsqrt ▪Round 2. 基本运算 、-、*、/ 也可以使用函数add sub mul div 3. matmul 矩阵…

ipad作为扩展屏的最简单方式(无需数据线)

ipad和win都下载安装toDesk&#xff0c;并且都处于同一局域网下 连接ipad&#xff0c;在ipad中输入win设备的设备密码和临时密码&#xff0c;连接上后可以看到ipad会是win屏幕的镜像&#xff0c;此时退出连接&#xff0c;准备以扩展模式再次连接。 注意&#xff0c;如果直接从…

第9集《佛遗教经》

和尚尼慈悲&#xff0c;诸位法师、诸位居士&#xff0c;阿弥陀佛&#xff01; 请大家打开讲义第十八面&#xff0c;丙四、不疲倦功德 蕅益大师把本经的正宗分分成两科&#xff1a;&#xff08;一&#xff09;共世间法要。&#xff08;二&#xff09;不共世间法要。也就是说&a…

keepalived双活互备模式测试

文章目录 环境准备部署安装keepavlived配置启动测试模拟Nginx宕机重新启动问题分析 环境准备 测试一下keepalived的双主模式&#xff0c;所谓双主模式就是两个keepavlied节点各持有一个/组虚IP&#xff0c;默认情况下&#xff0c;二者互为主备&#xff0c;同时对外提供服务&am…

时序电路的Verilog设计——基本时序元件

目录 一、Verilog语法 1.1 时钟边缘检测函数 1.2 边缘触发型时序模块的verilog设计规律

【GameFramework框架内置模块】2、数据节点(Data Node)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

2024年2月中国数据库排行榜:PolarDB夺魁首登顶,TiDB攀升回探花

银装素裹覆大地&#xff0c;春意初醒待来临。2024年2月墨天轮中国数据库流行度榜单出炉&#xff0c;表现最亮眼的无疑是PolarDB&#xff0c;其自23年7月以来一路高歌猛进&#xff0c;此次更是一举夺魁&#xff0c;彰显了云原生数据库的蓬勃发展态势&#xff0c;OceanBase、TiDB…

神经网络基础——激活函数的选择、参数初始化

一、神经网络 1、神经网络 人工神经网络&#xff08;Artificial Neural Network&#xff0c;即ANN&#xff09;也简称为神经网络&#xff08;NN&#xff09;是一种模仿生物神经网络结构 和功能的计算模型。 2、基本部分 输入层&#xff1a;输入 x 输出层&#xff1a;输出 y 隐…

国际章真厉害,离婚后仍带汪峰继女小苹果赴日滑雪。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 在如今这个纷繁复杂的社会中&#xff0c;家庭关系和亲子关系的…

由于 vscode 版本更新为 1.86.1引起的相关问题。

通过vscode ssh来远程连接linux服务器的代码&#xff0c;由于vscode 1.86.1的更新&#xff0c;在连接服务器时就开始报 两个错误了&#xff1a; Missing GLIBCXX > 3.4.25! Missing GLIBC > 2.28! lwd192.168.66.148s password: 075b6e8e3a87: runningMissing GLIBCXX &g…