- 一、需求
- 二、数据库表设计
- 三、DTO
- 四、接口
- 五、mybatis实现映射
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 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(){
return Result.success(service.list());
}
五、mybatis实现映射
这种 一级标签DTO里面包含二级标签列表List的情况,要使用
LabelMapper.xml文件如下:
注意:
property值对应LabelDto里面的:
//二级标签列表 private ListlabelSubDtoList; }



