IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【mybatis实例操作】01 <resultMap>中 <collection>的使用 -> 正文阅读

[大数据]【mybatis实例操作】01 <resultMap>中 <collection>的使用

一、需求

JAVA实现如下图所示的“标签”列表接口:
在这里插入图片描述
学习技术、人力资源、数字化为“一级标签”,下面的为“二级子标签”。

二、数据库表设计

一级标签表db_label:

-- ----------------------------
-- Table structure for db_label
-- ----------------------------
DROP TABLE IF EXISTS `db_label`;
CREATE TABLE `db_label` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb4 NOT NULL DEFAULT '' COMMENT '名称',
  `createtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modifytime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='一级标签表';

二级标签表db_label_sub:

-- ----------------------------
-- Table structure for db_label_sub
-- ----------------------------
DROP TABLE IF EXISTS `db_label_sub`;
CREATE TABLE `db_label_sub` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `label_id` bigint(20) NOT NULL COMMENT '一级标签id',
  `name` varchar(100) CHARACTER SET utf8mb4 NOT NULL DEFAULT '' COMMENT '名称',
  `createtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `modifytime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='二级标签表';

三、DTO

一级标签DTO:

@Getter
@Setter
public class LabelDto extends Serializable {
	private static final long serialVersionUID = 1L;
	//一级标签名称
	private String name;
	//二级标签列表
	private List<LabelSubDto> labelSubDtoList;
}

二级标签DTO:

@Getter
@Setter
public class LabelSubDto extends Serializable {
	private static final long serialVersionUID = 1L;
	//一级标签id
	private Long labelId;
	//二级标签名称
	private String name;
}

四、接口

//标签列表
@PostMapping("/list")
@ResponseBody
public Result<List<LabelDto>> list(){
	return Result.success(service.list());
}

五、mybatis实现映射

这种 一级标签DTO里面包含二级标签列表List的情况,要使用<resultMap>中的 <collection>来实现,使用 <collection>可以解决这种关联的一对多关系。

LabelMapper.xml文件如下:

  <resultMap id="LabelResultMap" type="com.test.bi.bo.LabelDto">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
    <result column="modifytime" jdbcType="TIMESTAMP" property="modifytime" />
    <collection property="LabelSubDtoList" ofType="com.test.bi.bo.LabelSubDto">
      <id column="bid" jdbcType="BIGINT" property="id" />
      <result column="label_id" jdbcType="BIGINT" property="labelId" />
      <result column="bname" jdbcType="VARCHAR" property="name" />
      <result column="bcreatetime" jdbcType="TIMESTAMP" property="createtime" />
      <result column="bmodifytime" jdbcType="TIMESTAMP" property="modifytime" />
    </collection>
  </resultMap>

  <select id="list" resultMap="LabelResultMap">
    SELECT a.*,
           b.id as bid, b.label_id, b.name as bname
    FROM db_label a
    Left JOIN db_label_sub b
    ON a.id = b.label_id
  </select>

注意:

<collection property="LabelSubDtoList" ofType="com.test.bi.bo.LabelSubDto">

property值对应LabelDto里面的:

	//二级标签列表
	private List<LabelSubDto> labelSubDtoList;
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-02 13:28:01  更:2022-05-02 13:28:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:55:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码