Mybatis 查询对象中嵌套其他对象的解决方法有两种,一种是用关联另一个resultMap的形式,如
<association property="office" javaType="Office" resultMap="officeMap"/>
<mapper namespace="com.dixn.oa.modules.sys.dao.RoleDao"> <resultMap type="Office" id="officeMap"> <id property="id" column="id" /> <result property="name" column="office.name" /> <result property="code" column="office.code" /> </resultMap> <resultMap id="roleResult" type="Role"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="enname" column="enname" /> <result property="roleType" column="roleType" /> <result property="dataScope" column="dataScope" /> <result property="remarks" column="remarks" /> <result property="useable" column="useable" /> <association property="office" javaType="Office" resultMap="officeMap"/> <collection property="menuList" ofType="Menu"> <id property="id" column="menuList.id" /> </collection> <collection property="officeList" ofType="Office"> <id property="id" column="officeList.id" /> </collection> </resultMap> <sql id="roleColumns"> a.id, a.office_id AS "office.id", a.name, a.enname, a.role_type AS roleType, a.data_scope AS dataScope, a.remarks, a.create_by AS "createBy.id", a.create_date, a.update_by AS "updateBy.id", a.update_date, a.del_flag, o.name AS "office.name", o.code AS "office.code", a.useable AS useable, a.is_sys AS sysData </sql> <select id="get" resultMap="roleResult"> SELECT <include refid="roleColumns"/> rm.menu_id AS "menuList.id", ro.office_id AS "officeList.id" FROM sys_role a JOIN sys_office o ON o.id = a.office_id LEFT JOIN sys_role_menu rm ON rm.role_id = a.id LEFT JOIN sys_role_office ro ON ro.role_id = a.id WHERE a.id = #{id} </select>
另一种联合查询 (一对一)的实现,但是这种方式有“N+1”的问题,不建议使用
<resultMap id="roleResult" type="Role"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="enname" column="enname" /> <result property="roleType" column="roleType" /> <result property="dataScope" column="dataScope" /> <result property="remarks" column="remarks" /> <result property="useable" column="useable" /> <association property="office" javaType="Office" column="id" select="getOfficeById"/> <collection property="menuList" ofType="Menu"> <id property="id" column="menuList.id" /> </collection> <collection property="officeList" ofType="Office"> <id property="id" column="officeList.id" /> </collection> </resultMap>
<select id="getOfficeById" resultType="Office"> select o.name AS "office.name",o.code AS "office.code" from sys_office o where o.id = #{id} </select> 以上就是两种对象内嵌套对象查询的实现。
相关推荐
mybatis 关联查询 一对一 一对多 ResultMap association collection 完整代码
mybatis 多层级collection嵌套
该资源主要通过举例讲述mybatis中的一对一关联查询,并用两种不同的方法进行操作。
mybatis 关联下旬 一对多 一对一 多对多
编写程序,对MyBatis的关联映射进行应用,要求对一对一、一对多、多对多三种关系,分别应用嵌套查询和嵌套结果两种方式,来实现操作。
Mybatis关联映射 Mybatis关联映射 Mybatis关联映射 Mybatis关联映射 Mybatis关联映射
自关联查询一对多的例子,也就是充当一方,以新闻栏目为例子
mybatis关联查询问题(一对多、多对一) 博客系统源码
MyBatis关联映射代码
了解数据表之间以及对象之间的三种关联关系 2.熟悉关联关系中的嵌套查询和 嵌套结果 3.掌握一对一,一对多,和多对多关联映射作用
个人认为,这个东西,网上的资料很多都是坑人的,我这个完成了功能
分别说出这三种关系属于MyBatis关联关系的哪种类型,通过在相应表中添加合适的外键或创建中间表的方式实现这些关联关系,并创建相应的类,实现以下的查询: (1)通过Student表的id查找该学生的信息,并同时获取其学号...
Mybatis实现数据的增删改查(CRUD)。Mybatis关联查询(嵌套查询)。
这是一个springboot架构搭建的一个整合mybatis递归查询的demo,其中整合了分布式事物jta,mybatis的分页插件等
该文件夹中包含mybatis多对多查询的具体案例,该文件夹中包含创建的数据库资料以及程序源代码,需要具体讲解请见博客:http://mp.blog.csdn.net/postedit/79247707
mybatis 批量插入 嵌套select
springboot mybatis多数据源加事务嵌套 事务之间的调用 回滚 亲测可用 定义2个库分别建立 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户编号', `user_name` varchar(25) ...
里面描述的了mybatis关联/级联的使用方法,还有常见的几种动态sql的使用方法 比如<if></if><where></where>
支持mysl底过程查询,可以查询帖子评论的多级回复以及每个回复关联的用户信息.可以作为类似于帖子回复这种嵌套递归查询业务的模板,可移植性高.如果疑问之处可多多交流
实现Mybatis框架中一对多关联映射的查询操作。 User用户表 - Order_form订单表属于 1-N 的关系。 一个用户对象包含一批订单信息