2019独角兽企业重金招聘Python工程师标准>>>

最近在练习时 遇到了类似于 企鹅里的好友分组功能,使用的持久层框架是mybatis 第一次处理这种关系 记录一下 备忘。。

首先是表结构:

<user_group > 好友分组 、 <t_group> 用户与好友分组的关联表 、 <t_user> 用户表

实现需求的返回格式:

之后就到了重点,处理这种数据格式 重点在Mybatis的resultMap 和 对应的实体类:

分组实体类 UserGroupsView

public class UserGroupsView {    /*** 好友分组ID*/@Idprivate Integer id;/*** 好友分组名*/@Column(name = "groupname" )private String groupName;/*** 分组下好友集合*/private List<UserGroupView> userGroupViewList;
}

分组下好友实体类UserGroupView

public class UserGroupView {/*** 好友分组ID*/@Id@Column(name="user_group_id")private Integer userGroupId;/*** 好友ID*/@Column(name = "friend_id")private Integer friendId;/*** 用户昵称*/private String username;/*** 在线状态 online:在线、offline:离线、hide:隐身*/private String status;/*** 用户签名*/private String sign;/*** 头像URL*/private String avatar;/*** 是否删除 0,(否)/1,(是)*/@Column(name = "is_delete")private Integer isDelete;
}

在mybatis中的处理:

这里的重点应该是 id为UserGroupsMap 中的返回集合类型上,这个resultMap返回的集合 对应着UserGroupView实体类 所以返回到 分组实体类中 是一个集合。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.UserGroupMapper"><resultMap id="BaseResultMap" type="com.model.UserGroup"><id column="id" jdbcType="INTEGER" property="id"/><result column="group_id" jdbcType="INTEGER" property="groupId"/><result column="friend_id" jdbcType="INTEGER" property="friendId"/></resultMap><resultMap id="UserGroupMap" type="com.model.view.UserGroupView"><id column="user_group_id" jdbcType="INTEGER" property="userGroupId"/><result column="friend_id" jdbcType="INTEGER" property="friendId"/><result column="username" jdbcType="VARCHAR" property="username"/><result column="status" jdbcType="VARCHAR" property="status"/><result column="sign" jdbcType="VARCHAR" property="sign"/><result column="avatar" jdbcType="VARCHAR" property="avatar"/><result column="is_delete" jdbcType="INTEGER" property="isDelete"/></resultMap><resultMap id="UserGroupsMap" type="com.model.view.UserGroupsView"><id column="id" jdbcType="INTEGER" property="id"/><result column="groupname" jdbcType="INTEGER" property="groupName"/><collection property="userGroupViewList" resultMap="UserGroupMap"/></resultMap><select id="selectGroups" resultMap="UserGroupsMap">SELECTt_group.id,t_group.groupname,user_group.id AS user_group_id,t_user.id AS friend_id,t_user.username,t_user.`status`,t_user.sign,t_user.avatarFROMuser_groupINNER JOIN t_user ON user_group.friend_id = t_user.idINNER JOIN t_group ON t_group.id = user_group.group_idWHERE<!-- 这里暂时把userId写死-->t_group.user_id = 1</select></mapper>

对应mapper的interface

public interface UserGroupMapper extends Mapper<UserGroup> {// 获取用户好友分类 及其分类下的好友List<UserGroupsView> selectGroups();
}

执行sql语句的返回结果大概是这样:

转载于:https://my.oschina.net/danjuan/blog/906437

Mybatis——返回类型为 集合嵌套集合 应该如何处理相关推荐

  1. Mybatis返回类型和接收参数为Map类型

    事情的起因是这样的:今天在项目中查看mybatis框架的sql语句时候,看到接收参数和返回参数都是Map类型,这使得我突然眼前一亮,因为之前所接触过的传参和返回类型,除了java的常用数据类型之外,就 ...

  2. Java学习日志(八): 可变参数,debug断点调试,静态导入,集合嵌套

    JavaEE学习日志持续更新----> 必看!JavaEE学习路线(文章总汇) Java学习日志(八) 可变参数 debug断点调试 静态导入 集合嵌套 可变参数 JDK1.5之后的新特性 作用 ...

  3. mybatis mysql查询树形结构_MyBatis collection 集合嵌套查询树形节点

    原标题:MyBatis collection 集合嵌套查询树形节点 MyBatis collection 集合 MyBatis 是数据持久层框架,支持定制化 SQL.存储过程以及高级映射.尤其强大在于 ...

  4. java mybatis 返回map_mybatis返回map集合的格式是什么?mybatis返回map集合实例

    Mybatis因为会与数据库交互,所以经常会有返回map集合的场景,那一般mybatis返回map集合的格式是什么呢?下面小编就用一些实例与你分享分享吧. 例1:返回key不定:返回key为学员id, ...

  5. Java16-day07【Map(概述、特点、功能、遍历)、HashMap集合练习、集合嵌套、Collections、模拟斗地主升级版】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  6. 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)

    好用的对象转xml.xml转对象工具类-支持集合嵌套转换(Java实现) 网上找了很多转换工具,对于自己的业务都不是很合适,所以总结了一下网上的方案,最终定下来是这样子的,主要使用dom4j做操作 m ...

  7. 用集合return多个值_Laravel + Nestedset 扩展:嵌套集合模型实现无限级分类

    一.两种分层数据模型 分层数据(Hierarchical Data),比如无限级分类菜单.省市区分级等,类似于树型数据结构,在 MySQL 等关系型数据库中不能很自然的展示这种父-子关系,常见的实现模 ...

  8. Java的泛型---(英雄联盟集合嵌套案例)

    目录 Java的泛型 JDK1.5以后出现的机制 为什么会有泛型呢? 泛型 泛型类 泛型方法 泛型接口 泛型通配符 ?extends E ?superE 增强for 泛型类的测试 泛型方法的测试 泛型 ...

  9. Java SE基础知识详解第[12]期—集合(Set、Collections、Map、集合嵌套)

    写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...

最新文章

  1. 让数据库变快的10个建议
  2. linux内存系统管理,Linux内存管理之伙伴系统(内存释放)
  3. mysql表级锁和行级锁
  4. OpenBoard的板级支持包(BSP)开发召集令
  5. java三角形剪角_大班数学:拼角剪角
  6. How to solve C library not available dtaidistance
  7. Python Django 正向查询与逆向查询
  8. 使用node https module创建服务器遇到的mac verify failure错误消息
  9. 如何成为公司独当一面的工程师
  10. python 多文件知识
  11. 请输入星期的第一个字母c语言,C语言经典案例:请输入星期几的第一个字母来判断一下是星期几,...
  12. windows2012运行linux,Linux一分钟部署完毕上线运行,windows server你要折磨我两天?...
  13. 聊聊Top2计算机博士2021年就业选择
  14. 蓝色起源8月25日进行无人飞行,携带实验设备等上天
  15. Scale-Dependent 3D Geometric Features
  16. [连接]研究MSN的一些参考资料(MSNP15)
  17. 清零软件解决连供打印机喷嘴断墨和堵塞
  18. 手把手教你用SPSS做出二元logistic回归分析
  19. php 小程序发送公众号的模板消息
  20. Flash builder4 插件版破解

热门文章

  1. 系统设计原则的重要性_设计原则的重要性及其对好的设计的影响
  2. 若川知乎问答:做前端感觉很吃力怎么办?
  3. C#实现写入文本文件内容功能
  4. HDU 5037 Frog(2014年北京网络赛 F 贪心)
  5. OS X 10.11 安装Cocoapods
  6. Java对象生命周期
  7. Linux I/O 模型(待修改)
  8. 一起谈.NET技术,异步调用与多线程的区别
  9. 在MinGW下使用DShow的方法
  10. nc65右键生成菜单_DbSchema生成表单和报表,原来如此简单