Mybatis-plus:单表使用关联查询+ResultMap结果映射

  • 一:数据表与实体类
  • 二:mapper与mapper.xml
  • 三:service
  • 四:控制器
  • 五:返回结果

一:数据表与实体类

数据表

DROP TABLE IF EXISTS `security_edu_info_type`;
CREATE TABLE `security_edu_info_type` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`keyName` char(12) DEFAULT NULL COMMENT 'key名称',`valueName` char(64) DEFAULT NULL COMMENT '值名称',`stage` char(32) DEFAULT NULL COMMENT '读书的年级或阶段',`stageType` int(1) DEFAULT NULL,`fieldType` char(64) DEFAULT NULL COMMENT '字段类型 1=currentStudy 2=educationType',`description` char(64) DEFAULT NULL COMMENT '描述',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=389 DEFAULT CHARSET=utf8 COMMENT='用户 - 教育背景 - 字段区分表(对currentStudy、educationType进行区分)';-- ----------------------------
-- Records of security_edu_info_type
-- ----------------------------
INSERT INTO `security_edu_info_type` VALUES ('364', '1', '7年级', '高中', '1', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('365', '2', '8年级', '高中', '1', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('366', '3', '9年级', '高中', '1', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('367', '4', '10年级', '高中', '1', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('368', '5', '11年级', '高中', '1', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('369', '6', '12年级', '高中', '1', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('370', '7', '大一', '本科', '2', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('371', '8', '大二', '本科', '2', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('372', '9', '大三', '本科', '2', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('373', '10', '大四', '本科', '2', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('374', '11', '研一', '研究生', '3', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('375', '12', '研二', '研究生', '3', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('376', '0', '暂无', '博士', '4', 'currentStudy', '目前就读');
INSERT INTO `security_edu_info_type` VALUES ('377', '0', '暂无', '高中', '1', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('378', '1', '国内高中文凭', '本科', '2', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('379', '2', 'IB', '本科', '2', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('380', '3', 'GED', '本科', '2', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('381', '4', 'IGCSE', '本科', '2', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('382', '0', '其他', '本科', '2', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('383', '4', '专科', '研究生', '3', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('384', '5', '本科', '研究生', '3', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('385', '0', '其他', '研究生', '3', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('386', '6', '本科', '博士', '4', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('387', '7', '硕士', '博士', '4', 'educationType', '获得学历类型');
INSERT INTO `security_edu_info_type` VALUES ('388', '0', '其他', '博士', '4', 'educationType', '获得学历类型');

实体类

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;import java.io.Serializable;
import java.util.List;@TableName("security_edu_info_type")
public class EduInfoType implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)private Long id;/*** key名称*/@TableField("keyName")private String keyName;@TableField("fieldType")private String fieldType;/*** 值名称*/@TableField("valueName")private String valueName;/*** 阶段名称*/private String stage;/*** 阶段类型*/@TableField("stageType")private String stageType;/*** 说明*/private String description;// 接收resultMap的值@TableField(exist = false)private List<EduInfoType> children;public List<EduInfoType> getChildren() {return children;}public void setChildren(List<EduInfoType> children) {this.children = children;}public static long getSerialVersionUID() {return serialVersionUID;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getKeyName() {return keyName;}public void setKeyName(String keyName) {this.keyName = keyName;}public String getValueName() {return valueName;}public void setValueName(String valueName) {this.valueName = valueName;}public String getStage() {return stage;}public void setStage(String stage) {this.stage = stage;}public String getStageType() {return stageType;}public void setStageType(String stageType) {this.stageType = stageType;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getFieldType() {return fieldType;}public void setFieldType(String fieldType) {this.fieldType = fieldType;}
}

二:mapper与mapper.xml

mapper

mport com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.business.app.entities.EduInfoType;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface EduInfoTypeMapper extends BaseMapper<EduInfoType> {List<EduInfoType> selectEduInfoTypeList(String fieldType);}

mapper.xml

<?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.business.app.mapper.EduInfoTypeMapper"><resultMap id="baseResult" type="com.business.app.entities.EduInfoType"><result property="stageType" column="stageType" /><result property="keyName" column="keyName"/><result property="valueName" column="valueName"/><result property="stage" column="stage"/><collection property="children" ofType="com.business.app.entities.EduInfoType"><id property="id" column="id"/><result property="keyName" column="keyName"/><result property="valueName" column="valueName"/><result property="stage" column="stage"/></collection></resultMap><select id="selectEduInfoTypeList" resultMap="baseResult">SELECTDISTINCT t1.stageType,t1.valueName,t2.id,t2.keyName,t2.valueName,t2.stageFROMsecurity_edu_info_type AS t1LEFT JOIN security_edu_info_type AS t2 ON t1.stageType = t2.stageTypeWHEREt1.fieldType = #{fieldType} and t2.fieldType = #{fieldType}ORDER BYt1.id asc, t2.id asc</select></mapper>

三:service

接口

public interface IEduInfoTypeService {Object selectEduInfoTypeList();
}

接口实现

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.business.app.entities.EduInfoType;
import com.business.app.mapper.EduInfoTypeMapper;
import com.business.app.service.IEduInfoTypeService;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** @author lihaisong* @version 1.0* @date 2021-07-29 14:37*/
@Service
public class EduInfoTypeServiceImpl extends ServiceImpl<EduInfoTypeMapper, EduInfoType> implements IEduInfoTypeService {@Overridepublic Object selectEduInfoTypeList() {//取出list集合某列值,并去重//List<String> newList1 = educationTypeList.stream()//                     .map(EduInfoType::getStage).collect(Collectors.toList());//List<String> educationList = newList1.stream().distinct().collect(Collectors.toList());//System.out.println("输出单号集合:"+educationList);String fieldType1 = "currentStudy";List<EduInfoType> currentStudyList = baseMapper.selectEduInfoTypeList(fieldType1);String fieldType2 = "educationType";List<EduInfoType> educationTypeList = baseMapper.selectEduInfoTypeList(fieldType2);Map<String,Object> map = new HashMap<>();map.put("currentStudyList", currentStudyList);map.put("educationTypeList", educationTypeList);return map;}}

四:控制器

@Resource
private IEduInfoTypeService eduInfoTypeService;@ApiOperation("获取教育背景列表")
@GetMapping("/getEduInfoList")
public ApiResponse getEduInfoList(){return ApiResponse.ok(eduInfoTypeService.selectEduInfoTypeList());
}

五:返回结果

{"code":200,"message":"成功","data":{"educationTypeList":[{"id":null,"keyName":"0","fieldType":null,"valueName":"暂无","stage":"高中","stageType":"1","description":null,"children":[{"id":377,"keyName":"0","fieldType":null,"valueName":"暂无","stage":"高中","stageType":null,"description":null,"children":null}]},{"id":null,"keyName":"1","fieldType":null,"valueName":"国内高中文凭","stage":"本科","stageType":"2","description":null,"children":[{"id":378,"keyName":"1","fieldType":null,"valueName":"国内高中文凭","stage":"本科","stageType":null,"description":null,"children":null},{"id":379,"keyName":"2","fieldType":null,"valueName":"IB","stage":"本科","stageType":null,"description":null,"children":null},{"id":380,"keyName":"3","fieldType":null,"valueName":"GED","stage":"本科","stageType":null,"description":null,"children":null},{"id":381,"keyName":"4","fieldType":null,"valueName":"IGCSE","stage":"本科","stageType":null,"description":null,"children":null},{"id":382,"keyName":"0","fieldType":null,"valueName":"其他","stage":"本科","stageType":null,"description":null,"children":null}]},{"id":null,"keyName":"4","fieldType":null,"valueName":"专科","stage":"研究生","stageType":"3","description":null,"children":[{"id":383,"keyName":"4","fieldType":null,"valueName":"专科","stage":"研究生","stageType":null,"description":null,"children":null},{"id":384,"keyName":"5","fieldType":null,"valueName":"本科","stage":"研究生","stageType":null,"description":null,"children":null},{"id":385,"keyName":"0","fieldType":null,"valueName":"其他","stage":"研究生","stageType":null,"description":null,"children":null}]},{"id":null,"keyName":"6","fieldType":null,"valueName":"本科","stage":"博士","stageType":"4","description":null,"children":[{"id":386,"keyName":"6","fieldType":null,"valueName":"本科","stage":"博士","stageType":null,"description":null,"children":null},{"id":387,"keyName":"7","fieldType":null,"valueName":"硕士","stage":"博士","stageType":null,"description":null,"children":null},{"id":388,"keyName":"0","fieldType":null,"valueName":"其他","stage":"博士","stageType":null,"description":null,"children":null}]}],"currentStudyList":[{"id":null,"keyName":"1","fieldType":null,"valueName":"7年级","stage":"高中","stageType":"1","description":null,"children":[{"id":364,"keyName":"1","fieldType":null,"valueName":"7年级","stage":"高中","stageType":null,"description":null,"children":null},{"id":365,"keyName":"2","fieldType":null,"valueName":"8年级","stage":"高中","stageType":null,"description":null,"children":null},{"id":366,"keyName":"3","fieldType":null,"valueName":"9年级","stage":"高中","stageType":null,"description":null,"children":null},{"id":367,"keyName":"4","fieldType":null,"valueName":"10年级","stage":"高中","stageType":null,"description":null,"children":null},{"id":368,"keyName":"5","fieldType":null,"valueName":"11年级","stage":"高中","stageType":null,"description":null,"children":null},{"id":369,"keyName":"6","fieldType":null,"valueName":"12年级","stage":"高中","stageType":null,"description":null,"children":null}]},{"id":null,"keyName":"7","fieldType":null,"valueName":"大一","stage":"本科","stageType":"2","description":null,"children":[{"id":370,"keyName":"7","fieldType":null,"valueName":"大一","stage":"本科","stageType":null,"description":null,"children":null},{"id":371,"keyName":"8","fieldType":null,"valueName":"大二","stage":"本科","stageType":null,"description":null,"children":null},{"id":372,"keyName":"9","fieldType":null,"valueName":"大三","stage":"本科","stageType":null,"description":null,"children":null},{"id":373,"keyName":"10","fieldType":null,"valueName":"大四","stage":"本科","stageType":null,"description":null,"children":null}]},{"id":null,"keyName":"11","fieldType":null,"valueName":"研一","stage":"研究生","stageType":"3","description":null,"children":[{"id":374,"keyName":"11","fieldType":null,"valueName":"研一","stage":"研究生","stageType":null,"description":null,"children":null},{"id":375,"keyName":"12","fieldType":null,"valueName":"研二","stage":"研究生","stageType":null,"description":null,"children":null}]},{"id":null,"keyName":"0","fieldType":null,"valueName":"暂无","stage":"博士","stageType":"4","description":null,"children":[{"id":376,"keyName":"0","fieldType":null,"valueName":"暂无","stage":"博士","stageType":null,"description":null,"children":null}]}]}
}

Mybatis-plus:单表使用关联查询+ResultMap结果映射相关推荐

  1. Day4-Mybatis框架(多表的关联查询)

    Day4-Mybatis框架(多表的关联查询) 关联查询 使用背景:项目中可能不止一个表的时候 即多表的时候(表间关系可分为一对一,一对多,多对多) 这时候查询会涉及到来自多个表的操作. 简单的入门代 ...

  2. mysql 一对多 右表多条记录合并_MYSQL 单表一对多查询,将多条记录合并成一条记录...

    一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实现SQL语句: SELECT a.books, GRO ...

  3. Hibernate实现对多个表进行关联查询

    Hibernate实现对多个表进行关联查询? String sTest = "from tBookInfo book, BookSelection sel where book.id = s ...

  4. mysql 不通过关联查询表_mysql中多表不关联查询的实现方法详解

    下面小编就为大家带来一篇浅谈mysql中多表不关联查询的实现方法.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 大家在使用MySQL查询时正常是直接一个表的查询,要不然 ...

  5. MySQL8单表记录多少_mysql学习笔记之8(单表数据记录查询)_mysql

    mysql学习笔记之八(单表数据记录查询) 查询数据记录,就是指从数据库对象中获取所要求的数据记录.mysql中提供了各种不同方式的数据查询方法. 一.简单数据记录查询 select field1,f ...

  6. MYSQL 单表一对多查询,将多条记录合并成一条记录

    MYSQL 单表一对多查询,将多条记录合并成一条记录 一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实 ...

  7. springDataJpa入门教程(5)-单表动态条件查询+分页

    springDataJpa入门教程 springDataJpa入门教程(1)-基于springBoot的基本增删改查 springDataJpa入门教程(2)-Specification动态条件查询+ ...

  8. 【MyBatis】myBatis动态传入表名进行查询

    由于分表就涉及到了有相近查询语句只是表名不同的情况,刚开始使用了 <select id="selectById" resultMap="BaseResultMap& ...

  9. mybatis --入门 单表增删改查-curd

    目录 1. mybatis 环境搭建 2. 实体类映射文件配置(写sql) 3. mybatis核心配置文件 (环境配置) 4. 测试 mybatis document https://mybatis ...

最新文章

  1. C++与JAVA语言区别
  2. Qt多线程中的信号与槽
  3. pandas之Seris和DataFrame
  4. mysql百万数据根据索引查询_mysql创建多列索引查询百万表数据的性能优化经验分享...
  5. 信息学奥赛一本通(2049:【例5.19】字符串判等)
  6. python爬取两个网站_python-2:爬取某个网页(虎扑)帖子的标题做词云图
  7. php登陆页添加记住密码选项,PHP 实现登录记住密码
  8. win10系统开启扫描仪服务器,Win10系统下如何使用扫描仪|win10系统中扫描仪的使用方法...
  9. 微信小程序需要的软件下载
  10. 禁用电子邮件服务器,启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server
  11. CSPS2019Day2T1(Emiya家今天的饭)题解
  12. 京东直营店和自营店有哪些区别?
  13. 1000年出现了哪些闰年C语言,C语言判断“1000年―2000年”之间的闰年
  14. matlab 椭圆参数传递,用MATLAB绘图已知椭圆参数方程
  15. 【3D建模制作技巧分享】Zbrush中凹凸贴图、法线贴图和置换贴图的区别
  16. 将学生信息按照总分排名然后分别保存较高的几位和较低的几位学生信息到两个不同的文件
  17. 腾讯T-Star高校挑战赛
  18. 微信公众平台 html,微信公众平台.html
  19. 华为微型计算机,8英寸华为平板M5青春版今日发布
  20. 6种上市公司数据的采集方法和工具

热门文章

  1. 面向对象程序设计第四单元总结(UML系列)
  2. 有没有好的python教程推荐_学习python中的pandas有没有好的教程推荐?
  3. 计算机毕业设计django基于python图书馆借阅系统(源码+系统+mysql数据库+Lw文档)
  4. 强大的跨平台事件日志审核管理工具 - SNARE
  5. 记一次企业级爬虫系统升级改造(四):爬取微信公众号文章(通过搜狗与新榜等第三方平台)...
  6. 基于SIM800的GPRS通信实现
  7. 构造+贪心 Codeforces584E Anton and Ira
  8. it试用评估_it行业试用期转正工作总结4篇
  9. 压力测试过负载均衡_一致性 Hash 在负载均衡中的应用
  10. 数据结构个人笔记 第三课 顺序表和单链表