Mybatis一对多关联查询,返回结果集list中嵌套list实例,collection实现
- 1.问题描述
- 2.解决方法
- ==3.特别提醒==
- 4.运行结果
- 5.总结
1.问题描述
最近在使用SpringBoot框架开发Web层项目时遇到的一个小问题,需要查询一个对象(A)的数据内容到另一个对象(B)中的list集合中,将对象(B)的数据展示在页面上。
2.解决方法
复制代码
1
2
3
4解决方法:主要使用mybatis中的 collection 来解决,解决方法如下所示: 用户domain:
复制代码
1
2
3
4
5
6
7
8
9public class User implements Serializable{ private Integer id; private String name;//用户名 private String sex;//性别 private Integer roleId; //外键角色id private List<Role> roleList;//角色列表 ... }
复制代码
1
2角色domain:
复制代码
1
2
3
4
5
6
7public class Role implements Serializable{ private Integer id; private String rolename;//角色名 private String remark;//角色描述 ... }
UserMapper.xml文件
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13<resultMap id="BaseResultMap" type="ep.cms.febs.system.domain.User" > <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="sex" property="sex" jdbcType="VARCHAR" /> <collection property="roleList" resultMap="BatchListResultMap" /> </resultMap> <resultMap id="BatchListResultMap" type="ep.cms.febs.system.domain.Role"> <id column="r_id" property="id" jdbcType="INTEGER" /> <result column="rolename" property="rolename" jdbcType="VARCHAR" /> <result column="remark" property="remark" jdbcType="VARCHAR" /> <id column="userId" property="id" jdbcType="INTEGER" /> </resultMap>
接下来就是SQL语句的写法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14<select id="findUserDetail" resultMap="BaseResultMap" parameterType="ep.cms.febs.system.domain.User"> SELECT u.id, u.name, u.sex, r.id r_id, r.rolename, r.remark, r.userId FROM t_user as u LEFT JOIN r_role as r ON (r.userId = u.id) </select>
3.特别提醒
如果两个表中存在一样的字段名称 , 一定要用别名生成一个其他名称在result中的column中,例如user表中和role表中, 都存在 id 名称一样的字段 , 将role表中的id用别名换成 r_id。
4.运行结果
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35{ "code": 2, "message": "查询用户信息成功", "data": { "total": 3, "rows": [ { "id": 1, "name": "admin", "sex": "男", "roleList": [ { "id": 1, "rolename": "admin", "remark": "管理员", "userId": 1 }, { "id": 2, "rolename": "user", "remark": "用户", "userId": 1 }, { "id": 3, "rolename": "test", "remark": "测试", "userId": 1 } ] } ] } }
5.总结
在写XML语句的时候一定要注意==两个表查询出来的字段名称一定不能重复,有重复的起别名来区分。==好了,最后运行结果是这样,希望对你们有所帮助!有问题的可以在底下留言,看到会回复。
最后
以上就是拼搏山水最近收集整理的关于Mybatis一对多关联查询,返回结果集list中嵌套list实例(collection实现)1.问题描述的全部内容,更多相关Mybatis一对多关联查询,返回结果集list中嵌套list实例(collection实现)1内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复