网站面包屑导航设计特点,分销是怎么做的,西安教育平台网站建设,手机网站前1、为什么说 Mybatis 是半自动 ORM 映射工具#xff1f;它与全自动的区别在哪里#xff1f;Hibernate 属于全自动 ORM 映射工具#xff0c;使用 Hibernate 查询关联对象或者关联集合对象时#xff0c;可以根据对象关系模型直接获取#xff0c;所以它是全自动的。而 Mybati… 1、为什么说 Mybatis 是半自动 ORM 映射工具它与全自动的区别在哪里Hibernate 属于全自动 ORM 映射工具使用 Hibernate 查询关联对象或者关联集合对象时可以根据对象关系模型直接获取所以它是全自动的。而 Mybatis在查询关联对象或关联集合对象时需要手动编写 sql 来完成所以称之为半自动 ORM 映射工具。2、 一对一、一对多的关联查询 resultMapClassesResultMapselect * from class c,teacher t where c.teacher_idt.t_id andc.c_id#{id}javaTypecom.lcb.user.TeacherresultMapClassesResultMap2select * from class c,teacher t,student s where c.teacher_idt.t_idand c.c_ids.class_id and c.c_id#{id}javaTypecom.lcb.user.TeacherofTypecom.lcb.user.Student3、MyBatis 实现一对一有几种方式?具体怎么操作的有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在resultMap 里面配置 association 节点配置一对一的类就可以完成嵌套查询是先查一个表根据这个表里面的结果的 外键 id去再另外一个表里面查询数据,也是通过 association 配置但另外一个表的查询通过 select 属性配置。4、MyBatis 实现一对多有几种方式,怎么操作的有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在resultMap 里面的 collection 节点配置一对多的类就可以完成嵌套查询是先查一个表,根据这个表里面的 结果的外键 id,去再另外一个表里面查询数据,也是通过配置 collection,但另外一个表的查询通过 select 节点配置。5、Mybatis 是否支持延迟加载如果支持它的实现原理是什么Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载association 指的就是一对一collection 指的就是一对多查询。在 Mybatis配置文件中可以配置是否启用延迟加载 lazyLoadingEnabledtrue|false。它的原理是使用 CGLIB 创建目标对象的代理对象当调用目标方法时进入拦截器方法比如调用 a.getB().getName()拦截器 invoke()方法发现 a.getB()是null 值那么就会单独发送事先保存好的查询关联 B 对象的 sql把 B 查询上来然后调用 a.setB(b)于是 a 的对象 b 属性就有值了接着完成 a.getB().getName()方法的调用这就是延迟加载的基本原理。当然了不光是 Mybatis几乎所有的包括 Hibernate支持延迟加载的原理都是一样的。我是一名码龄10年的程序员在这里会分享实在干货让你少走弯路成就精彩人生。