首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
05-26 16:16
已编辑
字节跳动_研发(实习员工)
27届勇闯实习!!Moon Shot 增长二面(已OC)
询问基本情况三道场景题:需要设计一个短链系统怎么设计,怎么从长链转换成短链的,怎么选择hash函数,怎么决定hash的长度,这个长度短链能承载的url数量怎么评估。为什么抖音的直播能够承载数万人同时在线,但是对于一个游戏只能容忍几十个人同时竞技为什么对于百度的搜索可以刷新之后数据不丢失,但是对于表单提交没法刷新,而且url 其他人没法访问?反问环节这应该是主管面,问的都是系统设计相关的问题,面试过程很轻松,把面试当作交流的话,能学到挺多东西的。#牛客AI配图神器#
查看6道真题和解析
面试问题记录
点赞
评论
收藏
分享
04-16 04:21
广东培正学院 单片机
25届应届生,想找嵌入式软件工作,求大佬提点,听劝。真的尽我所能走投无路了,工作小白,没有实习,不知道咋办
嵌入式求职之路:
可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞
评论
收藏
分享
04-24 21:09
已编辑
门头沟学院 测试工程师
字节 我也配?
我也配???算法题这辈子总共做过十道计网约等于没学过sql只会增删改查编程语言学了几年还是只知道if else本来就是投着玩。。你还真要面我你真敢啊
坚定的芭乐反对画饼_许愿Offer版:
好好准备,字节会记录面评的,面评脏了就不好捞了
字节求职进展汇总
0offer互助地
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
05-29 22:21
社招Offer选择:小马智行、追觅科技
Offer1:小马智行,深圳,测试开发工程师,17.0k*16.0,Offer2:追觅科技,深圳,嵌入式工程师,18.0k*15.0,
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
我的校园恋爱正式结束了
1.3W
2
...
这次是真的告别了!
1.1W
字节暑期补捞
热聊中
3
...
极限春招小结
9160
4
...
从后端的角度聊一聊:2728届想要搞开发的同学现在最应该干什么?
8192
5
...
找工作找到厌倦了,晒一下毕业照吧!
7651
6
...
坐我后面的妹妹被拉走了!!
6919
7
...
毕业照和春招结束代表着我的学生时代落幕了
6889
8
...
第一次给了美团
6376
9
...
26届找不到暑期实习也不必太焦虑!!!!
6359
10
...
实习生崩溃瞬间
5886
创作者周榜
更多
正在热议
更多
#
写给毕业5年后的自己
#
3380次浏览
58人参与
#
海信求职进展汇总
#
64345次浏览
356人参与
#
华泰证券Fintech星战营
#
167554次浏览
190人参与
#
职场捅娄子大赛
#
315435次浏览
3239人参与
#
HR问:你期望的薪资是多少?如何回答
#
39472次浏览
524人参与
#
华为求职进展汇总
#
4640882次浏览
28240人参与
#
如果今天是你的last day,你会怎么度过?
#
22125次浏览
197人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
107756次浏览
779人参与
#
好好告别我的学生时代
#
38115次浏览
777人参与
#
晒晒我司的端午福利
#
14422次浏览
99人参与
#
实习/项目/竞赛奖项,哪个对找工作更重要?
#
82456次浏览
1108人参与
#
参加完秋招的机械人,还参加春招吗?
#
47384次浏览
544人参与
#
金融财经春招备战日记
#
19273次浏览
127人参与
#
视觉/交互/设计百问百答
#
42782次浏览
427人参与
#
晒一下我的毕业照
#
29533次浏览
315人参与
#
如何缓解求职过程中的焦虑?
#
6463次浏览
93人参与
#
上班苦还是上学苦呢?
#
222192次浏览
1326人参与
#
记录实习开销
#
22787次浏览
171人参与
#
如果中了500万,你会离职吗?
#
81570次浏览
649人参与
#
工作两年想退休了
#
119393次浏览
1115人参与
#
金融银行面经
#
73627次浏览
519人参与
牛客网
牛客企业服务