Mybatis——返回类型为 集合嵌套集合 应该如何处理
生活随笔
收集整理的這篇文章主要介紹了
Mybatis——返回类型为 集合嵌套集合 应该如何处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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——返回类型为 集合嵌套集合 应该如何处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 201521123070 《JAVA程序
- 下一篇: js温故而知新11(AJAX)——学习廖