首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-27 20:59
华南理工大学 C++
感谢面试官,但是自己太菜
4.27腾讯广告部门一面70min,面试问题不难但是自己全程发抖,不知道是激动还是悸动😢,说话都在发抖,后来面试官评价我是一个内敛的人😭半个小时拷打项目之后全是c++记忆写1.emplace-back和pushback2.给了两张图让我判断输出的是什么,一个是forward一个是循环引用3.内存序4.shrink-to-fit5.红黑树,b树6.deque和vector区别以及应用,原理7.内存对齐8.手撕209leetcode面试官都出这种题了,我都没有做出来9.什么时候可以出结果,今明两天10.评价一下我,中肯的,有点内敛,表达的不清晰🥺(面试说话自己都感觉在发抖),估计无了...
查看10道真题和解析
如何判断面试是否凉了
点赞
评论
收藏
分享
04-25 16:03
中南大学 Java
腾讯云智4.11二面面经
自我介绍Redis的原理,一开始还没怎么懂,后面才知道他想问的是Redis的单线程+IO多路复用实习项目高并发的压力出现在哪里数据库读写分离带来了什么新的挑战实习遇到的比较大的困难或者挑战数据库和缓存的一致性假如你这个系统QPS从100突然提高到了10万,你会怎么优化整体的架构,瓶颈可能会出现在哪里假设别人连数据库正常,你连数据库不正常,要怎么去排查?别人写的代码很烂,不写注释,但有更好的方法实现,你要怎么办假设你负责的功能,发版的时候出了bug,第一个事情该做什么通过什么渠道了解技术趋势反问,建议多去了解ai大模型相关的知识很神奇,没有手撕,就是感觉聊天就聊了很久,还问我本科同学有多少人进了...
查看11道真题和解析
实习工作,你找得还顺利吗?
点赞
评论
收藏
分享
03-27 21:35
门头沟学院 Java
是不是寄了
兄弟们,这是不是寄了#小米招聘#
点赞
评论
收藏
分享
03-22 23:47
字节跳动_后端(实习员工)
淘天,原来这就是你想要的兵
6段大厂实习,太恐怖了,真给淘天选到超人了。xhs刷到的大佬,向大佬致敬。
小啊谢:
985应届生,3年工作经验就是这种人
点赞
评论
收藏
分享
04-28 19:27
已编辑
湖南大学 Java
美团测开一面凉经
八股:1、get和post方法的区别?2、http和https的区别?3、Linux常用命令?4、Java中equals()方法和==的区别?5、Java中基本数据类型?6、Java多线程有哪些实现方式?7、抽象类和接口的区别?8、事务的特性?9、一张user表,有name和sex两个字段,写sql语句查询姓陈的女性。10、一张表查询某个字段中重复的数据。11、朋友圈的点赞功能,如何设计测试用例?(有无大佬给个参考答案)总结:很公式化的八股。手撕:链表L1->L2->...->Ln-1->Ln,转换成L1->Ln->L2->Ln-1->...的形...
美团一面2061人在聊
查看12道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
暑期后端高频问题汇总
7.3W
2
...
左手敲代码的程序员,不配拥有offer吗?
7.2W
3
...
想听实话吗,校招ssp聊聊大厂客户端
4.5W
4
...
五一假期,弯道超车时间表
8787
5
...
北京到底有谁在啊?
8768
6
...
后端简历上最值得写的项目
8674
7
...
暑期实习终章
7064
8
...
五一别写你那破开源代码了
6348
9
...
美团/饿了么/京东 配送端面经
6253
10
...
五一准备刷完这些面试八股题!!
6020
创作者周榜
更多
正在热议
更多
#
设计人如何选offer
#
97945次浏览
680人参与
#
找工作,行业重要还是岗位重要?
#
6961次浏览
86人参与
#
五一之后,实习真的很难找吗?
#
44581次浏览
313人参与
#
盲审过后你想做什么?
#
12362次浏览
110人参与
#
领导秒批的请假话术
#
9698次浏览
74人参与
#
外包能不能当跳板?
#
22046次浏览
191人参与
#
考研可以缓解求职焦虑吗
#
20612次浏览
244人参与
#
五一假期,你打算“躺”还是“卷”?
#
26584次浏览
406人参与
#
面试等了一周没回复,还有戏吗
#
115278次浏览
1072人参与
#
找工作前vs找工作后的心路变化
#
7128次浏览
64人参与
#
牛友们的论文几号送审
#
27161次浏览
623人参与
#
你喜欢工作还是上学
#
37384次浏览
409人参与
#
应届生薪资多少才合理?
#
3053次浏览
24人参与
#
如何缓解入职前的焦虑
#
171743次浏览
1267人参与
#
写简历别走弯路
#
714139次浏览
7850人参与
#
每人推荐一个小而美的高薪公司
#
72822次浏览
1357人参与
#
如果有时光机,你最想去到哪个年纪?
#
43211次浏览
765人参与
#
硬件人,你被哪些公司给挂了
#
46502次浏览
719人参与
#
大疆的机械笔试比去年难吗
#
69569次浏览
602人参与
#
扒一扒那些奇葩实习经历
#
41638次浏览
770人参与
牛客网
牛客企业服务