首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
ikun真的很困
桂林电子科技大学 后端
发布于广西
关注
已关注
取消关注
@养鱼吗:
面试官:小伙子你来介绍一下MyBatis
什么是MyBatis MyBatis 本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。 Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。 总之,Mybatis对JDBC访问数据库的过程进行了封装,简化了JDBC代码,解决JDBC将结果集封装为Java对象的麻烦。 下图是MyBatis架构图: (1)mybatis-config.xml是Mybatis的核心配置文件,通过其中的配置可以生成SqlSessionFactory,也就是SqlSession工厂 (2)基于SqlSessionFactory可以生成SqlSession对象 (3)SqlSession是一个既可以发送SQL去执行,并返回结果,类似于JDBC中的Connection对象,也是Mybatis中至关重要的一个对象。 (4)Executor是SqlSession底层的对象,用于执行SQL语句 (5)MapperStatement对象也是SqlSession底层的对象,用于接收输入映射(SQL语句中的参数),以及做输出映射(即将SQL查询的结果映射成相应的结果) 为什么要使用MyBatis 思考:在开始之前,思考下如何通过JDBC查询Emp表中的所有记录,并封装到一个List集合中返回。(演示:准备数据、导包、导入JDBC程序) 1、使用传统方式JDBC访问数据库: (1)使用JDBC访问数据库有大量重复代码(比如注册驱动、获取连接、获取传输器、释放资源等); (2)JDBC自身没有连接池,会频繁的创建连接和关闭连接,效率低; (3)SQL是写死在程序中,一旦修改SQL,需要对类重新编译; (4)对查询SQL执行后返回的ResultSet对象,需要手动处理,有时会特别麻烦; 2、使用mybatis框架访问数据库: (1)Mybatis对JDBC对了封装,可以简化JDBC代码; (2)Mybatis自身支持连接池(也可以配置其他的连接池),因此可以提高程序的效率; (3)Mybatis是将SQL配置在mapper文件中,修改SQL只是修改配置文件,类不需要重新编译。 (4)对查询SQL执行后返回的ResultSet对象,Mybatis会帮我们处理,转换成Java对象。 总之,JDBC中所有的问题(代码繁琐、有太多重复代码、需要操作太多对象、释放资源、对结果的处理太麻烦等),在Mybatis框架中几乎都得到了解决!! 下面是一些面试常见题,希望可以帮助到需要的小伙伴们 1、什么是Mybatis? 2、Mybaits的优点? 3、MyBatis框架的缺点? 4、MyBatis框架适用场合 5、MyBatis与Hibernate有哪些不同? 6、#{} 和${}的区别是什么? 7、当实体类中的属性名和表中的字段名不一样,怎么办? 8、 模糊查询like语句该怎么写? 9、通常一个Xml映射文件,都会写一个Dao接口与之对应, 请问,这个Dao接口的工作原理是什么?Dao接口里的方法, 参数不同时,方法能重载吗? 10、Mybatis是如何进行分页的?分页插件的原理是什么? 11、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? 12、 Mybatis如何执行批量操作 13、如何获取自动生成的(主)键值? 14、在mapper中如何传递多个参数? 15、Mybatis动态sql有什么用?执行原理?有哪些动态 sql? 16、Xml映射文件中,除了常见的select|insert|updae|delete 标签之外,还有哪些标签? 18、为什么说Mybatis是半自动ORM映射工具?它与全动的区别在哪里? 19、 一对一、一对多的关联查询 ? 20、MyBatis实现一对一有几种方式?具体怎么操作的? 21、MyBatis实现一对多有几种方式,怎么操作的? 22、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么? 23、Mybatis的一级、二级缓存: 24、什么是MyBatis的接口绑定?有哪些实现方式? 25、使用MyBatis的mapper接口调用时有哪些要求? 26、Mapper编写有哪几种方式? 27、简述Mybatis的插件运行原理,以及如何编写一个插件? 28、传统JDBC开发存在什么问题? 29、JDBC编程有哪些不足之处,MyBatis是如何解决的? 30、MyBatis编程步骤是什么样的? 31、请说说MyBatis的工作原理? 32、MyBatis的功能架构是怎样的? 33、MyBatis的框架架构设计是怎么样的? 34、什么是DBMS? 35、为什么需要预编译? 36、Mybatis都有哪些Executor执行器?它们之间的区别是什么? 37、Mybatis中如何指定使用哪一种Executor执行器? 38、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么? 如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论, 收藏 等于白嫖,点赞才是真情。
点赞 19
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 17:31
中国地质大学 Java
腾讯面试:怎么解决缓存穿透、击穿和雪崩问题?
前不久,有位朋友去腾讯面试,他说被问到怎么解决缓存穿透、击穿和雪崩问题? 本文将跟大家一起来探讨如何回答这个问题。这个问题之所以频繁出现,是因为在使用缓存时,稍有不慎就可能碰到它们。一旦缓存崩溃,大量的请求就会直接转到数据库,造成数据库的巨大压力,甚至可能导致崩溃。然而,许多新手在初次接触缓存时,往往没有意识到这一潜在问题,直到线上故障发生时才开始考虑缓存崩溃的影响。因此,面试官通常会在面试中关注你是否具备解决此类问题的能力。什么是 缓存雪崩、击穿、穿透?首先大家得知道缓存雪崩、击穿、穿透是什么意思,并且了解发生这些问题原因,根据对应的原因,解决问题,“对症下药”。什么是缓存雪崩?通常我们为了...
点赞
评论
收藏
分享
昨天 15:50
已编辑
中国科学院大学 Java
我JAVA竟然不是第一 野榜
学习java没有方向的同学可以看看我之前的总结,里边包括自己亲身实践拿到ssp的学习路程和重要的八股还有一些HR的问题https://www.nowcoder.com/creation/manager/columnDetail/MRwNvb
点赞
评论
收藏
分享
04-03 11:37
美团_核心本地商业_后端开发实习生(实习员工)
暑期实习到此为止
耐面王
高斯林的信徒:
武大简历挂?我勒个骚岗
点赞
评论
收藏
分享
05-17 15:05
陕西国际商贸学院 前端开发其它
大二,想要去实习(计算机专业)
求指教,求内推!不挑岗位,只要跟专业相关的都可以,麻烦各位大佬们指教一下,本人很乐意谦虚学习吃苦耐劳
程序员牛肉:
啥也不是,好好沉淀吧。 先有能力再去寻找实习。
不给转正的实习,你还去吗
我的实习求职记录
点赞
评论
收藏
分享
05-24 16:42
腾讯_腾讯云_测试开发(实习员工)
更新 腾讯云 二面 面经 已OC版
把自己的一些面试完的感想和想法写一写记录一下,本人非科班出身,不是大佬,瞎写,请大佬轻喷。拿到OC了,打算把自己腾讯面试的一些回答写一下,可能对其他人有点帮助,如果说的不对也请大佬们指正。一、拷打项目1、科研成果是一个人做的还是团队?研究的这个项目,过程中有遇到什么比较困难的地方吗?(建议就是如实回答,你一个人做还是团队做的,面试官是问的出来的。如果说自己一个人做,你就要对自己这个项目很了解,不然问到一个点你回答不上来,面试官会怀疑你是不是在说谎。项目困难的地方基本每次都会问,每个项目准备好一个特定的问题模版回答就好。)2、简历里面有提到专利,那你这个专利的创新点是什么?(回答了一堆但是没回答...
腾讯开奖358人在聊
查看15道真题和解析
牛客在线求职答疑中心
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
我的校园恋爱正式结束了
1.2W
2
...
这次是真的告别了!
9374
腾讯暑期补捞
热聊中
3
...
极限春招小结
7235
4
...
坐我后面的妹妹被拉走了!!
6691
5
...
找工作找到厌倦了,晒一下毕业照吧!
6354
6
...
从后端的角度聊一聊:2728届想要搞开发的同学现在最应该干什么?
6336
7
...
实习生崩溃瞬间
5642
8
...
毕业照和春招结束代表着我的学生时代落幕了
5190
9
...
26届找不到暑期实习也不必太焦虑!!!!
5047
10
...
🐶狗应该比我适合当产品经理
4487
创作者周榜
更多
正在热议
更多
#
写给毕业5年后的自己
#
2931次浏览
58人参与
#
海信求职进展汇总
#
64003次浏览
355人参与
#
华泰证券Fintech星战营
#
167293次浏览
190人参与
#
职场捅娄子大赛
#
313776次浏览
3226人参与
#
HR问:你期望的薪资是多少?如何回答
#
39133次浏览
521人参与
#
华为求职进展汇总
#
4638791次浏览
28236人参与
#
如果今天是你的last day,你会怎么度过?
#
21846次浏览
197人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
107385次浏览
778人参与
#
好好告别我的学生时代
#
36078次浏览
760人参与
#
晒晒我司的端午福利
#
14107次浏览
99人参与
#
实习/项目/竞赛奖项,哪个对找工作更重要?
#
82126次浏览
1108人参与
#
参加完秋招的机械人,还参加春招吗?
#
47122次浏览
544人参与
#
金融财经春招备战日记
#
19021次浏览
127人参与
#
视觉/交互/设计百问百答
#
42548次浏览
427人参与
#
晒一下我的毕业照
#
28547次浏览
305人参与
#
如何缓解求职过程中的焦虑?
#
5978次浏览
90人参与
#
上班苦还是上学苦呢?
#
221840次浏览
1326人参与
#
记录实习开销
#
21773次浏览
168人参与
#
如果中了500万,你会离职吗?
#
81351次浏览
649人参与
#
工作两年想退休了
#
119042次浏览
1115人参与
#
金融银行面经
#
73378次浏览
519人参与
牛客网
牛客企业服务