使用Mybatis封装返回多层级数据

前言

实际开发中,我们从数据库查询返回得到的数据可能需要二次封装成前端想要处理的数据,而不只是简单的返回 pojo/entity 类。

例如,有如下一张简单的表:分类表

字段 含义
id 分类 id
name 分类名称
parent_id 父类 id,第一级分类 parent_id 为 0

如表格所示,这张表用来存储大学专业分类数据、或者商品分类、图书分类等,这些分类往往是多级结构的。

例如,我们可能需要这样的数据展示:

一级分类 二级分类
经济学 经济学类
财政学类
金融学类
法学 法学类
政治学类
社会学类
理学 数学类
物理学类
化学类
天文学类
工学 力学类
机械类

我们可以在查询到数据后,直接在 pojo 类上进行封装成前端所需要的数据结构返回,但是我们可以利用 MyBatis 帮我们完成封装过程,提高开发效率。

代码实现

我们只需使用 MyBatis 提供的 resultMap 标签指明查询数据的数据结构即可。

关于 resultMap 标签,它的属性有:

  • id:唯一标识自己,与 select 标签中的 resultMap 属性绑定
  • type: 指明数据封装使用的

它的子标签有:

  • id :表示数据库中的主键
  • result:基本数据类型所对应的列
  • collection:映射对象集合
  • association:映射单个对象
  • discriminator:条件分支,根据结果决定映射

详细可以查看说明:XML 映射器_MyBatis中文网

这里使用上文讲述的大学专业分类展示

数据准备

分类表结构category 以及数据

CREATE TABLE `category` (
  `id` int(11) NOT NULL COMMENT 'id 主键',
  `parent_id` int(11) DEFAULT NULL COMMENT '上级 Id, 一级分类的 parent_id 为 0',
  `name` varchar(20) DEFAULT NULL COMMENT '分类名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `category` VALUES (1, 0, '经济学');
INSERT INTO `category` VALUES (2, 0, '法学');
INSERT INTO `category` VALUES (3, 0, '理学');
INSERT INTO `category` VALUES (4, 0, '工学');
INSERT INTO `category` VALUES (11, 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值