mybatis返回集合对象包含List<String>
时间:2021-07-13
本文章向大家介绍mybatis返回集合对象包含List<String>,主要包括mybatis返回集合对象包含List<String>使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
需求:
最近遇到一个需求:
一个团队对应多个人,一个人只能有一个团队
根据团队的成绩的降序,查询出每个团队的信息,和其中每一个团队中每个人的名字。
分析:
首先:需要查询出每个人团队的信息
其次:查询出每个团队中对应的用户的名字
所以返回结果应该是
返回一个List,List中每一个对象都是一个团队,然后每一个团队的人员名单显示到List<String> userNames中。
数据库表:(数据库表只显示了部分必要字段)
团队表
CREATE TABLE `team` ( `id` varchar(255) NOT NULL COMMENT '雪花算法,id', `team_id` varchar(255) DEFAULT NULL COMMENT '团队id', `team_name` varchar(255) DEFAULT NULL COMMENT '团队名字', `group_results` float(8,2) DEFAULT NULL COMMENT '团队成绩' PRIMARY KEY (`id`) USING BTREE ) COMMENT='团队表';
人员表
CREATE TABLE `person` ( `id` varchar(255) NOT NULL DEFAULT '' COMMENT '主键id(用户id)', `team_id` varchar(22) DEFAULT NULL COMMENT '团队id', `user_code` varchar(22) DEFAULT NULL COMMENT '学号', `user_name` varchar(22) DEFAULT NULL COMMENT '用户姓名', PRIMARY KEY (`id`) USING BTREE ) COMMENT='人员表';
解决方案:
SELECT t.team_id, t.team_name, t.group_results, p.`user_name` FROM `person` p RIGHT JOIN ( SELECT t.team_id, t.team_name, t.group_results FROM `team` t ) t ON p.team_id = t.team_id ORDER BY group_results DESC
实体
构造的实体,很简单,但是重要的一点就是返回的用户名的集合
@Data public class TeamRanking { private String teamName;//小组名字 private Double teamGrade;//小组成绩 private List<String> userNames; private Integer teamId; })
dao层
dao层返回的是上面那个对象的集合
List<TeamRanking> selectTeamRanking();
mybatis的mapper
在Mapper中,使用了ResultMap的collection标签,并且:
collection的properties=对应名字的集合
collection标签中result标签的propertis内容也是对应集合的名字。
<select id="selectTeamRanking" resultMap="selectTeamRankingMap"> SELECT t.team_id, t.team_name, t.group_results, p.`user_name` FROM `person` p RIGHT JOIN ( SELECT t.team_id, t.team_name, t.group_results FROM `team` t ) t ON p.team_id = t.team_id ORDER BY group_results DESC </select> <resultMap id="selectTeamRankingMap" type="com.tfjybj.typing.model.TeamRankingModel"> <result property="teamId" column="team_id"></result> <result property="teamName" column="team_name"></result> <result property="teamGrade" column="group_results"></result> <collection property="userNames" ofType="string"> <result property="userNames" column="user_name"></result> </collection> </resultMap>
踩过的坑:
笔者也使用过,但是最后都没有成功,最后在大家的讨论中,尝试出来上面的方式。
如果有大佬研究过mybaits的映射源码的,笔者非常迫切的请求赐教。
<resultMap id="selectTeamRankingMap" type="com.tfjybj.typing.model.TeamRankingModel"> <result property="teamId" column="team_id"></result> <result property="teamName" column="team_name"></result> <result property="teamGrade" column="group_results"></result> <collection property="userNames" ofType="string" column="user_name"></collection> </resultMap>
<resultMap id="selectTeamRankingMap" type="com.tfjybj.typing.model.TeamRankingModel"> <result property="teamId" column="team_id"></result> <result property="teamName" column="team_name"></result> <result property="teamGrade" column="group_results"></result> <collection ofType="string" column="user_name"> <result property="userNames"></result> </collection> </resultMap>
转:https://blog.csdn.net/qizhi666/article/details/109462142
原文地址:https://www.cnblogs.com/panchanggui/p/15008162.html
- .Net中如何操作IIS
- Havex:以工控设备为狩猎目标的恶意软件
- 大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践
- 浅谈php安全
- 在统一的分析平台上构建复杂的数据管道
- 隐藏在注册表的恶意软件 – Poweliks
- 数千万WordPress和Drupal站点存在DDoS风险
- 利用基因突变和K均值预测地区种群
- 缓冲区溢出攻击初学者手册(更新版)
- 在Python机器学习中如何索引、切片和重塑NumPy数组
- HelloWorld,我的第一趟旅程出发点
- Android OpenGL开发实践 - GLSurfaceView对摄像头数据的再处理
- 走进科学:对七夕“超级病毒”XX神器的逆向分析
- 机器学习 - 朴素贝叶斯分类器的意见和文本挖掘
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释