我是靠谱客的博主 拼搏山水,最近开发中收集的这篇文章主要介绍Mybatis一对多关联查询,返回结果集list中嵌套list实例(collection实现)1.问题描述,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Mybatis一对多关联查询,返回结果集list中嵌套list实例,collection实现
- 1.问题描述
- 2.解决方法
- ==3.特别提醒==
- 4.运行结果
- 5.总结
1.问题描述
最近在使用SpringBoot框架开发Web层项目时遇到的一个小问题,需要查询一个对象(A)的数据内容到另一个对象(B)中的list集合中,将对象(B)的数据展示在页面上。
2.解决方法
解决方法:主要使用mybatis中的 collection 来解决,解决方法如下所示:
用户domain:
public class User implements Serializable{
private Integer id;
private String name;//用户名
private String sex;//性别
private Integer roleId; //外键角色id
private List<Role> roleList;//角色列表
...
}
角色domain:
public class Role implements Serializable{
private Integer id;
private String rolename;//角色名
private String remark;//角色描述
...
}
UserMapper.xml文件
<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语句的写法
<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.运行结果
{
"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.问题描述所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复