最近在练习时 遇到了类似于 企鹅里的好友分组功能,使用的持久层框架是mybatis 第一次处理这种关系 记录一下 备忘。。
首先是表结构:
<user_group > 好友分组 、 <t_group> 用户与好友分组的关联表 、 <t_user> 用户表
实现需求的返回格式:
之后就到了重点,处理这种数据格式 重点在Mybatis的resultMap 和 对应的实体类:
分组实体类 UserGroupsView
public class UserGroupsView { /** * 好友分组ID */ @Id private Integer id; /** * 好友分组名 */ @Column(name = "groupname" ) private String groupName; /** * 分组下好友集合 */ private ListuserGroupViewList;}
分组下好友实体类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实体类 所以返回到 分组实体类中 是一个集合。
对应mapper的interface
public interface UserGroupMapper extends Mapper{ // 获取用户好友分类 及其分类下的好友 List selectGroups();}
执行sql语句的返回结果大概是这样: