mybatis查询返回一个三级目录

  • 解决办法
  • Bean的设计
  • mybatis写法
  • 具体实现情况

职场小白,边学边记
做项目遇到一个返回二层嵌套的三级目录的问题,第一次用框架,好多地方不懂,查了许多资料终于解决了这个问题

解决办法

写了三个Bean

  1. 第一个:嵌套二级目录的一级目录
  2. 第二个:嵌套三级目录的二级目录
  3. 第三个:三级目录

ResultMap可以嵌套,这里不做赘述,代码里可以直观看见
(个人认为实际上写两个ResultMap就可以满足,二三层写到一起)

关键点

写SQL时根据关系写出一条查询语句,直接映射为一对多对多的关系 我的是三个层级的目录通过一个parent字段存在一个表里,不同情况不同讨论,但是实现目标是一致的,即形成一对多对多的关系映射(其实就是两个一对多连在了一块)

Bean的设计

最外层整体目录

public class WholeCatalogEntity {//一级目录Idprivate BigInteger title;// 一级目录名称private String key;// 二级目录private List<SecondCatalogEntity> children;
}

中间层目录

public class SecondCatalogEntity {//二级目录Idprivate BigInteger title;//二级目录名称private String key;//三级目录  private List<ThirdCatalogEntity> children;
}

最底层目录

public class ThirdCatalogEntity {//三级目录Idprivate BigInteger title;//三级目录名称private String key;
}

mybatis写法

<select id="getCatalog" resultMap="GetCatalog">select a.id as aid, a.catalog_name as acatalogName, b.id as bid, b.catalog_name as bcatalogName, c.id as cid, c.catalog_name as ccatalogNamefrom catalog as a LEFT join catalog as b on a.id = b.parent LEFT join catalog as c on b.id = c.parentwhere a.catalog_level = 1
</select>
<resultMap id="GetThirdCatalog" type="ThirdCatalogEntity"><id property="title" column="cid"/><result property="key" column="ccatalogName"/>
</resultMap>
<resultMap id="GetSecondCatalog" type="SecondCatalogEntity"><id property="title" column="bid"/><result property="key" column="bcatalogName"/><collection property="children" ofType="ThirdCatalogEntity" resultMap="GetThirdCatalog"/>
</resultMap>
<resultMap id="GetCatalog" type="WholeCatalogEntity"><id column="aid" property="title"/><result property="key" column="acatalogName"/><collection property="children" ofType="SecondCatalogEntity" resultMap="GetSecondCatalog"/>
</resultMap>

可以很直观的从代码里看出嵌套关系

具体实现情况

    "code": "0","message": "查询成功!","result": [{"title": "1","key": "test1","children": [{"title": "11","key": "test11","children": [{"title": "111","key": "ceshi2"},{"title": "112","key": "test112"},{"title": "113","key": "test113"},{"title": "861939","key": "三级目录"}]}]}

总结:一开始我以为要分别查出各级目录,然后在service层里去逐个装配,实施过程中发现非常麻烦而且难以实现,后来查到ResultMap尝试成功。新手缘故,我个人觉得整个代码还能更简洁,希望有大佬能够给出意见。

mybatis查询返回一个三级目录相关推荐

  1. mybatis查询返回null解决方案

    mybatis查询返回null解决方案 参考文章: (1)mybatis查询返回null解决方案 (2)https://www.cnblogs.com/zipon/p/6361661.html 备忘一 ...

  2. mybatis查询返回map的问题

    文章目录 背景 1.mybatis只返回单个map 2.查询返回map的list 3.利用mybatis的@MapKey注解返回map 4.重写handler 背景 假设背景: 想获取某个省下各个市有 ...

  3. Mybatis 查询 返回值中只有id有值,其他都是null;

    最近在重温mybatis, 但是在做练习的时候发现一个问题; 查询,简单的查询,返回之后发现结果中,只有id被映射了值,其他属性都是null; 很纳闷,为什么一个简单的测试会出现这种问题; 一开始以为 ...

  4. mybatis查询返回空,SQL数据库执行有数据!

    我的数据库为Oracle,可以插入,更新,但在在Mybatis中执行SQL查询返回的数据发现返回NULL,但是生成SQL放在数据库中查询是有数据的,并且SQL是正确的! 这是没有改动的XML: < ...

  5. mybatis查询返回null的原因_可怕!你没看错,这次确实是纯手工实现一个MyBatis框架...

    目录 前言 JDBC MyBatis 源码分析 前置知识 原理分析 自己实现一个 MyBatis 框架 前言 MyBatis是一个非常优秀的持久层应用框架,目前几乎已经一统天下.既然是持久层框架,那么 ...

  6. jpa 原生sql 查询返回一个实体_spring data系列之jpa

    Springdata 系列之spring data jpa 背景:随着互联网技术的发展,现在的企业开发中用到的用于数据存储的产品,不再仅仅是关系型数据库,而是要根据场景需要选择不同的存储技术,比如用于 ...

  7. 原生sql 查询返回一个实体_python连接SQLServer执行给定的查询SQL语句,并返回结果数据...

    今天写这篇文章的初衷就是在我昨天发表的文章<Python连接SQLServer数据库执行增删改查操作>后,一些读者反馈说跟Python完全没有关系,这里我想说的是:内容的确是与Python ...

  8. MyBatis查询返回Map类型数据

    1.Mapper中SQL: <select id="getBaseMap" resultType="java.util.HashMap"> sele ...

  9. Mybatis 查询返回List<String>集合

    返回List<String>集合时,需要将resultType的值定义为集合中元素类型,而不是返回集合本身. 有时候,我们不需要整个表的所有字段,而是只需要某一个字段的内容,比如:我希望从 ...

  10. Mybatis 查询返回List集合

    本文链接:https://blog.csdn.net/sotong006/article/details/81697814 返回List<String>集合时,需要将resultType的 ...

最新文章

  1. Flink并行度与Slot的关系
  2. Sicily 1153: 马的周游问题(DFS+剪枝)
  3. 配置.net连接数据库的配置文件
  4. linux中安装,编译时调用,运行时调用,更新共享库
  5. 长虹声纹识别技术推动家电产业向高阶形态发展
  6. JSP 的“4379”
  7. freeradius安装
  8. 网站速度优化的三套解决方案
  9. Frank and Hall
  10. 微博mysql连接错误_新浪微博错误代码详解
  11. 树莓派4B平台部署 kubeedge (cloudcore)+ isula
  12. 阿里云服务器搭建Django环境二:django+mysql环境搭建
  13. 云计算与openstack
  14. QT 记住账号密码登录
  15. 数据仓库系列文章一:浅谈数仓设计
  16. 交错和 (hihocoder)
  17. Swing-文本的绘制(设置字体)
  18. 难忘的童年~~~~~~真的好怀念!
  19. Drupal中的Pathauto介绍(来自站长百科)
  20. 损失函数里的from_logits=False是什么意思

热门文章

  1. Linux下终端的快捷键及建立打开终端的快捷键
  2. [转]高负载并发网站架构分析
  3. 基于FOC矢量算法的MTPA控制在变频洗衣机上的应用
  4. 暴力破解西电校园网密码
  5. tensorflow实现手写数字识别
  6. Arduino与Proteus仿真实例-TB6612FNG驱动直流电机仿真
  7. java技术管理的简历_基于javaweb个人简历生成及管理系统.doc
  8. win7驱动精灵_win7驱动打不上?黑科技H310/B360 USB核显驱动安装教程
  9. linux中用tailf实时观看tomcat日志
  10. 使用C++实现FC红白机模拟器 概述