我是靠谱客的博主 拼搏山水,最近开发中收集的这篇文章主要介绍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.问题描述所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部