mybatis 忽略实体字段_27道mybatis面试真题,你能答对几道?
1、什么是 Mybatis?
1、Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。
2、MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
3、通过 xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。(从执行 sql 到返回 result 的过程)。
2、Mybaits 的优点:
1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML标签,支持编写动态 SQL 语句,并可重用。
2、与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接;
3、很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要JDBC 支持的数据库 MyBatis 都支持)。
4、能够与 Spring 很好的集成;
5、提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
3、MyBatis 框架的缺点:
1、SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL 语句的功底有一定要求。
2、SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
4、MyBatis 框架适用场合:
1、MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。
2、对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是不错的选择。
5、MyBatis 与 Hibernate 有哪些不同?
1、Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句。
2、Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是 mybatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套 sql 映射文件,工作量大。
3、Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用 hibernate 开发可以节省很多代码,提高效率。
6、#{}和${}的区别是什么?
#{}是预编译处理,${}是字符串替换。
Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的
set 方法来赋值;
Mybatis 在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止 SQL 注入,提高系统安全性。
7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
第 1 种: 通过在查询的 sql 语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。
第 2 种: 通过来映射字段名和实体类属性名的一一对应的关系。
8、 模糊查询 like 语句该怎么写?
9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?
10、Mybatis 是如何进行分页的?分页插件的原理是什么?
11、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
12、如何执行批量插入?
13、如何获取自动生成的(主)键值?
14、在 mapper 中如何传递多个参数?
15、Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
16、Xml 映射文件中,除了常见的 select|insert|updae|delete标签之外,还有哪些标签?
17、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
18、 一对一、一对多的关联查询 ?
19、 MyBatis 实现一对一有几种方式?具体怎么操作的?
20、MyBatis 实现一对多有几种方式,怎么操作的?
21、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
22、Mybatis 的一级、二级缓存:
23、什么是 MyBatis 的接口绑定?有哪些实现方式?
24、使用 MyBatis 的 mapper 接口调用时有哪些要求?
25、Mapper 编写有哪几种方式?
26、简述 Mybatis 的插件运行原理,以及如何编写一个插件。
上面都是一部分的面试真题,大家觉得对自己有用的话,可以学以致用,最后就是我备战面试也收集看很多面试中经常会问到的核心知识点,面试真题等等
大家需要上面面试真题,以及更多大厂的面试真题的话,关注小编+转发文章+私信[架构资料]
重要的事情说三遍:转发+转发+转发
mybatis 忽略实体字段_27道mybatis面试真题,你能答对几道?相关推荐
- 凭借这1080道java面试真题,成功拿到阿里,京东等八家大厂offer
2019年还有一个多就要月结束了,时间一眨眼就过去了.今年面试有没有被面试官虐呢,明年跳槽想跳去哪个大厂呢,这是个问题,今年为了找到好工作,特地的从朋友那里讨来一份面试圣经(阿里某大牛),1080道面 ...
- 爆肝整理|BAT100道JavaScrip面试真题集锦(附解析)
最近听说一新词"金八银九". 说到它是如何衍生的,就必须提到下半年严峻的求职形势.大厂的 HC 本就不多,加之市场上求职人员的骤然增加, 8,9 两月就将迎来一波招聘小高峰. 向几 ...
- 2022软件测试面试题 200道大厂面试真题 刷完拿到10k职位
系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录 系列文章目录 前言 1. 编写测试用例时,一般会用到哪些方法进行测试用例的设计? 2. 测试过程中,为什么要做接口测试? 3. 测试过程中,如 ...
- 各大互联网公司面经分享:Java全栈知识+1500道大厂面试真题
这篇文章给大家分享一下我遇到的一些质量较高的面试经历,具体经过就不多说了,就把面试题打出来供各位读者老哥参考如有不全的地方,各位海涵. 猿辅导 八皇后问题 求二叉树的最长距离(任意两个节点的路径 中最 ...
- 各大厂面经分享:Java全栈知识+1500道大厂面试真题
这篇文章给大家分享一下我遇到的一些质量较高的面试经历,具体经过就不多说了,就把面试题打出来供各位读者老哥参考如有不全的地方,各位海涵. 猿辅导 八皇后问题 求二叉树的最长距离(任意两个节点的路径 中最 ...
- 天呐!350道Java面试真题分享
前言 最其实不管什么时候,找工作都跑不了面试.目前很多小编都做了面试手册了,那就是别人家的孩子都有糖了,作为一个自觉的小编,必须搞. 容我先絮叨一下,制作这个面试手册差不多花了3个多星期时间,过程还是 ...
- 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕.
1.MySQL 中有哪几种锁? 1.表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 2.行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并 ...
- 110道Python面试真题
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 整理了一些Python面试题和面试简历,如果需要,可以参考学习 具体面试题如下: 1. ...
- 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕!
1.MySQL 中有哪几种锁? 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最 ...
最新文章
- Pytorch | BERT模型实现,提供转换脚本【横扫NLP】
- CSS的一个FAQ问题——浮动层覆盖问题!!!
- ab -压测模拟并发的工具
- 将iPad, iPhone直投屏幕用于TEASOFT课程录制
- 说说身边产品的用户体验
- C语言实现测量数据处理,求出实际值的范围
- NYOJ 518 取球游戏
- 二十万字C/C++、嵌入式软开面试题全集宝典九
- 经典C语言程序100例之四三
- 求虚拟机11.0密钥
- f分布表完整图_分布式计算引擎之星——Spark
- 机器学习入门系列(1)--机器学习概览
- RSA公钥文件(PEM)解析
- c++ 数据结构之 线段树
- Android开发之ListView中Adapter的优化
- html 随机抽奖,随机抽奖页面js
- 移动开发用户行为分析神器之--AppSee!
- cesium之三维漫游飞行效果实现篇(转)
- python编写摇骰子游戏_python摇骰子猜大小的小游戏
- JVM运行参数之-X和-XX参数