mybatis查询返回一个三级目录
mybatis查询返回一个三级目录
- 解决办法
- Bean的设计
- mybatis写法
- 具体实现情况
职场小白,边学边记
做项目遇到一个返回二层嵌套的三级目录的问题,第一次用框架,好多地方不懂,查了许多资料终于解决了这个问题
解决办法
写了三个Bean
- 第一个:嵌套二级目录的一级目录
- 第二个:嵌套三级目录的二级目录
- 第三个:三级目录
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查询返回一个三级目录相关推荐
- mybatis查询返回null解决方案
mybatis查询返回null解决方案 参考文章: (1)mybatis查询返回null解决方案 (2)https://www.cnblogs.com/zipon/p/6361661.html 备忘一 ...
- mybatis查询返回map的问题
文章目录 背景 1.mybatis只返回单个map 2.查询返回map的list 3.利用mybatis的@MapKey注解返回map 4.重写handler 背景 假设背景: 想获取某个省下各个市有 ...
- Mybatis 查询 返回值中只有id有值,其他都是null;
最近在重温mybatis, 但是在做练习的时候发现一个问题; 查询,简单的查询,返回之后发现结果中,只有id被映射了值,其他属性都是null; 很纳闷,为什么一个简单的测试会出现这种问题; 一开始以为 ...
- mybatis查询返回空,SQL数据库执行有数据!
我的数据库为Oracle,可以插入,更新,但在在Mybatis中执行SQL查询返回的数据发现返回NULL,但是生成SQL放在数据库中查询是有数据的,并且SQL是正确的! 这是没有改动的XML: < ...
- mybatis查询返回null的原因_可怕!你没看错,这次确实是纯手工实现一个MyBatis框架...
目录 前言 JDBC MyBatis 源码分析 前置知识 原理分析 自己实现一个 MyBatis 框架 前言 MyBatis是一个非常优秀的持久层应用框架,目前几乎已经一统天下.既然是持久层框架,那么 ...
- jpa 原生sql 查询返回一个实体_spring data系列之jpa
Springdata 系列之spring data jpa 背景:随着互联网技术的发展,现在的企业开发中用到的用于数据存储的产品,不再仅仅是关系型数据库,而是要根据场景需要选择不同的存储技术,比如用于 ...
- 原生sql 查询返回一个实体_python连接SQLServer执行给定的查询SQL语句,并返回结果数据...
今天写这篇文章的初衷就是在我昨天发表的文章<Python连接SQLServer数据库执行增删改查操作>后,一些读者反馈说跟Python完全没有关系,这里我想说的是:内容的确是与Python ...
- MyBatis查询返回Map类型数据
1.Mapper中SQL: <select id="getBaseMap" resultType="java.util.HashMap"> sele ...
- Mybatis 查询返回List<String>集合
返回List<String>集合时,需要将resultType的值定义为集合中元素类型,而不是返回集合本身. 有时候,我们不需要整个表的所有字段,而是只需要某一个字段的内容,比如:我希望从 ...
- Mybatis 查询返回List集合
本文链接:https://blog.csdn.net/sotong006/article/details/81697814 返回List<String>集合时,需要将resultType的 ...
最新文章
- Flink并行度与Slot的关系
- Sicily 1153: 马的周游问题(DFS+剪枝)
- 配置.net连接数据库的配置文件
- linux中安装,编译时调用,运行时调用,更新共享库
- 长虹声纹识别技术推动家电产业向高阶形态发展
- JSP 的“4379”
- freeradius安装
- 网站速度优化的三套解决方案
- Frank and Hall
- 微博mysql连接错误_新浪微博错误代码详解
- 树莓派4B平台部署 kubeedge (cloudcore)+ isula
- 阿里云服务器搭建Django环境二:django+mysql环境搭建
- 云计算与openstack
- QT 记住账号密码登录
- 数据仓库系列文章一:浅谈数仓设计
- 交错和 (hihocoder)
- Swing-文本的绘制(设置字体)
- 难忘的童年~~~~~~真的好怀念!
- Drupal中的Pathauto介绍(来自站长百科)
- 损失函数里的from_logits=False是什么意思
热门文章
- Linux下终端的快捷键及建立打开终端的快捷键
- [转]高负载并发网站架构分析
- 基于FOC矢量算法的MTPA控制在变频洗衣机上的应用
- 暴力破解西电校园网密码
- tensorflow实现手写数字识别
- Arduino与Proteus仿真实例-TB6612FNG驱动直流电机仿真
- java技术管理的简历_基于javaweb个人简历生成及管理系统.doc
- win7驱动精灵_win7驱动打不上?黑科技H310/B360 USB核显驱动安装教程
- linux中用tailf实时观看tomcat日志
- 使用C++实现FC红白机模拟器 概述