怎样使用MyBatis轻松实现递归查询与存储过程调用
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,怎样使用MyBatis轻松实现递归查询与存储过程调用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。递归调用由于部门的层级不可控,因此如果
千家信息网最后更新 2025年02月01日怎样使用MyBatis轻松实现递归查询与存储过程调用
怎样使用MyBatis轻松实现递归查询与存储过程调用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
递归调用
由于部门的层级不可控,因此如果我想要获取所有部门的完整json的话,就要采用递归调用,使用Java代码处理递归有点low,刚好MyBatis的ResultMap中的collection可以很方便的解决这个问题,核心代码如下:
每一个Department中都有一个children属性,getDepByPid方法的返回结果是一个BaseResultMap,BaseResultMap中的collection又将调用getDepByPid方法,通过这种方式我们可以快速实现一个递归调用。Mapper中只需要定义如下方法即可:
ListgetDepByPid(Long pid);
查询结果如下(部分):
[ { "id": 1, "name": "股东会", "parentId": -1, "enabled": true, "children": [ { "id": 4, "name": "董事长", "parentId": 1, "enabled": true, "children": [ { "id": 5, "name": "总经理", "parentId": 4, "enabled": true, "children": [ { "id": 8, "name": "财务部", "parentId": 5, "enabled": true, "children": [], "parent": false }], "parent": true } ], "parent": true } ], "parent": true }]
存储过程调用
存储过程调用比较简单,以添加部门为例,如下:
1.Mapper中添加如下方法:
void addDep(@Param("dep") Department department);
2.xml中写法如下:
注意statementType调用表示这是一个存储过程,mode=IN表示这是输入参数,mode=OUT表示这是输出参数,调用成功之后,在service中获取department的id和result字段,就能拿到相应的调用结果了。
看完上述内容,你们掌握怎样使用MyBatis轻松实现递归查询与存储过程调用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
递归
方法
过程
存储
查询
结果
这是
部门
问题
代码
内容
参数
更多
成功
束手无策
为此
写法
原因
字段
对此
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
制作小程序服务器域名
数据库能不能同时创建三个表
武新华网络安全
软件开发转向游戏开发的访谈
软件开发项目管理 开源
dell服务器加显卡
云服务器是不是独享带宽
互联网科技公司怎么开发票
坚持网络安全无小事
东莞大视野点胶软件开发
源码查看web用的数据库
中国网络安全响应中心
银行计算机数据库考点
绍兴定制软件开发报价
县一级网络安全和信息通信
公安消防网络安全管理制度
觅马网络安全吗
汽配产品报价软件开发网
核心层数据库服务器
数据库中外键怎么添加数据
游戏软件开发就业单位
存储过程非结构化数据库
怎么找网络技术人才
电脑点击网络安全模式也进不去
不履行网络安全义务的处罚
网络安全三同步 同步规划
中国统计年检数据库
五个常见的中文数据库
电脑网络技术有前途吗
宜昌投资软件开发