mybatis resultmap嵌套_Java面试专题之九:Mybatis面试5个大概率被问到的问题
1、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。
而 Mybatis在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。
2、 一对一、一对多的关联查询 ?
resultMap="ClassesResultMap">
select * from class c,teacher t where c.teacher_id=t.t_id and
c.c_id=#{id}
javaType="com.lcb.user.Teacher">
resultMap="ClassesResultMap2">
select * from class c,teacher t,student s where c.teacher_id=t.t_id
and c.c_id=s.class_id and c.c_id=#{id}
javaType="com.lcb.user.Teacher">
ofType="com.lcb.user.Student">
3、MyBatis 实现一对一有几种方式?具体怎么操作的?
有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在
resultMap 里面配置 association 节点配置一对一的类就可以完成;
嵌套查询是先查一个表,根据这个表里面的结果的 外键 id,去再另外一个表里面查询数据,也是通过 association 配置,但另外一个表的查询通过 select 属性配置。
4、MyBatis 实现一对多有几种方式,怎么操作的?
有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在
resultMap 里面的 collection 节点配置一对多的类就可以完成;嵌套查询是先查一个表,根据这个表里面的 结果的外键 id,去再另外一个表里面查询数据,也是通过配置 collection,但另外一个表的查询通过 select 节点配置。
5、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加
载,association 指的就是一对一,collection 指的就是一对多查询。
在 Mybatis配置文件中,可以配置是否启用延迟加载 lazyLoadingEnabled=true|false。
它的原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用 a.getB().getName(),拦截器 invoke()方法发现 a.getB()是null 值,那么就会单独发送事先保存好的查询关联 B 对象的 sql,把 B 查询上来,然后调用 a.setB(b),于是 a 的对象 b 属性就有值了,接着完成 a.getB().getName()方法的调用,这就是延迟加载的基本原理。
当然了,不光是 Mybatis,几乎所有的包括 Hibernate,支持延迟加载的原理都是一样的。
我是一名码龄10年的程序员,在这里会分享实在干货,让你少走弯路,成就精彩人生。
mybatis resultmap嵌套_Java面试专题之九:Mybatis面试5个大概率被问到的问题相关推荐
- mybatis嵌套查询和嵌套结果有什么区别_Java面试专题之九:Mybatis面试5个大概率被问到的问题...
1.为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里? Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据 ...
- Mybatis resultMap 嵌套集合
resultMap 是 Mybatis 最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中. resultMap 包含的元素: <!--column不做限制,可 ...
- mybatis jar包_Java修行第039天---Mybatis框架
1.掌握框架的概念 (1)框架是什么 a)框架直白来说就是偷懒的程序员将代码进行封装,之后重复使用的过程 b)框架属于半成品 c)在使用框架时,需要告诉框架需要的信息.通常以配置文件的方式告知,一般来 ...
- 面试专题-电商项目面试篇
找工作面试的过程中,项目将会是整个流程的核心灵魂,也是能在面试中能让面试官尽快认同你的一个强有力的依据,所以在面试中把电商项目清晰的表述出来是极为关键的. 1.说说你最近做的这个项目的背景,简单的介绍 ...
- Java架构师面试题系列之Mybatis面试专题(36题,含详细答案解析)
[Java架构师面试网]收集整理了一些Java面试的常见问题,这些问题可能会在你下一次技术面试中遇到.想成为Java架构师,这些都是不可避免也是必须要掌握的哦,对于其他模块的面试题,我后续也将单独分享 ...
- 无门无派 程序员整理的32个MyBatis面试专题。(都是干货)
1.什么是 MyBatis? 答:MyBatis 是一个可以自定义 SQL.存储过程和高级映射的持久层框架. 2.讲下 MyBatis 的缓存 答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓 ...
- Java 后端开发面试总结:25 个技术专题(最全面试攻略)
另送福利: java 面试准备 准确的说这里又分为两部分: 1.Java 刷题 2.算法刷题 Java 刷题:此份文档详细记录了千道面试题与详解: ! 私信我回复[03]即可免费获取 很多人 ...
- BAT Android面试专题深入探究:四大组件+ViewPager+组件化架构+Bitmap
本篇是结合我之前面试别人的经验,以及跟一些在BAT上班的朋友,讨论总结出的一份很深的大公司需要用到的一些高端Android技术.这里也专门整理了一个文档,重点和难点都有详细解析.这些题目有点技术含量, ...
- mybatis resultMap映射学习笔记
这几天,百度mybatis突然看不到官网了,不知道百度怎么整的.特此贴出mybatis中文官网: http://www.mybatis.org/mybatis-3/zh/index.html 一个学习 ...
最新文章
- Verilog初级教程(7)Verilog模块例化以及悬空端口的处理
- 删除文件夹下所有的文件_Mac 删除文件/文件夹方法和快捷键
- 1:Hello world
- 使用apache的HttpGet\HttpPost获取返回内容编码问题
- java 面向对象个人理解
- wordpress 自定义字段
- nagios mysql入库_使用NDOUtils将Nagios监控信息存入Mysql
- 【paper and code】AC-GAN
- 集成CCFlow工作流与GPM的办公系统驰骋CCOA介绍(二)
- StackExchange.Redis 使用LuaScript脚本模糊查询hash
- mysql unix_timestamp()获取日期的时间戳 from_unixtime时间戳转日期
- 华为设备链路聚合配置命令
- 河南大学计算机网络考试试卷,计算机网络试卷.doc
- 高通骁龙200、400、600、800处理器规格分享
- 谷歌项目经理都是怎么玩OKR的?我只告诉你
- html 在线播放器,实现简易html视频播放器的方法
- tftpd32服务器软件在Windows与linux 下的文件传输
- linux 卸载dnw命令,《转载》linux下利用dnw烧写文件,dnw安装与配置
- 谈谈对陀螺仪和加速度传感器的感性认识
- DevOps自动化测试的原则和实践