首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-23 12:28
已编辑
北京大学 产品经理
滴滴提前批一二三面面经
一面1) 自我介绍2) String的长度3) ==和equals4) 异常的类型5) Static可以修饰什么6) 重写equals方法需要重写hashcode方法吗7) 深拷贝和浅拷贝8) 三个线程每个执行50次i++,最后结果是多少,怎么保证结果是1509) 实习介绍10) 怎么解决消息队列丢数据11) 在学校最大的成长是什么12) 对出行技术有了解吗手撕:合并 K 个升序链表二面1) 自我介绍2) 研究生方向,研究基架为什么找后端开发3) 怎么学习后端开发的4) 研究生期间遇到最大的困难是什么5) 在实习干了啥6) 在学校有院士级别的人带吗7) Mysql慢查询优化有哪些方案8) 介绍...
面试问题记录
点赞
评论
收藏
分享
07-23 12:45
已编辑
长安大学 产品经理
7.23百度提前批二面结束!
一面(60-70 min,纯技术) 1. 自我介绍 + 项目 5-8 min 2. 手撕代码(现场 ACM 模式,无补全) • 题 A:Top-K(数据规模 1e8,内存限制 512 MB)——先写堆排,再被追问如果单机内存只有 10 MB 怎么办 • 题 B:判断链表是否有环并返回环入口(LeetCode 142) • 题 C:非递归先序遍历二叉树(要求 O(1) 空间) 3. 算法深挖 • 快排最坏退化场景 & 如何避免(三数取中 + 随机化) • 链表与数组实现队列的复杂度对比 4. 计算机基础 • new / delete 与 malloc / free 的区别(从构...
查看17道真题和解析
点赞
评论
收藏
分享
06-12 16:52
滇西科技应用技术大学 招聘专员
求大佬帮帮忙
25届应届毕业生,求offer
下北澤大天使:
你是我见过最美的牛客女孩😍
点赞
评论
收藏
分享
昨天 10:22
中南大学 营销
拿下宇通秋招offer
感谢收留
宇通开奖5人在聊
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批一面 7.24
1.0W
2
...
字节复活赛
8021
3
...
百度一二面凉经
6562
4
...
不懂来大厂实习究竟能学到啥?
3994
5
...
滴滴提前批面经
3809
6
...
入我滴滴!早十晚六 !
3414
7
...
滴滴提前批面经
3178
8
...
百度提前批一面:面试官居然让我手撕两数之和???最奇幻的一轮面试,结束还说.......
3024
9
...
百度一面面经7.14
2920
10
...
百度二面面筋
2887
创作者周榜
更多
正在热议
更多
#
哪些公司开提前批了?
#
26208次浏览
263人参与
#
华子oc时间线
#
1244211次浏览
6484人参与
#
风评不好的公司,你会去吗?
#
61221次浏览
442人参与
#
实习如何「偷」产出?
#
50939次浏览
1332人参与
#
除了主业以外,你还有哪些其他收入?
#
12065次浏览
201人参与
#
不卡学历的大厂有哪些?
#
29134次浏览
228人参与
#
哪些公司校招卡第一学历
#
68092次浏览
268人参与
#
校招阶段,学历VS技术哪个更重要?
#
17625次浏览
188人参与
#
职场新人体验
#
25839次浏览
248人参与
#
腾讯音乐求职进展汇总
#
98132次浏览
570人参与
#
社恐入职新公司如何融入团队
#
11909次浏览
63人参与
#
校园里的破防时刻
#
11361次浏览
128人参与
#
你投递的公司有几家约面了?
#
108940次浏览
779人参与
#
Offer比较,你最看重什么?
#
191615次浏览
1301人参与
#
你觉得技术面多长时间合理?
#
100264次浏览
720人参与
#
你的秋招第一场笔试是哪家
#
147739次浏览
1484人参与
#
你最满意的offer薪资是哪家公司?
#
33105次浏览
176人参与
#
你今年的平均薪资是多少?
#
134035次浏览
686人参与
#
正在实习的碎碎念
#
1454790次浏览
13469人参与
#
实习打杂,要跑路吗
#
18246次浏览
205人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务