怎样使用MyBatis轻松实现递归查询与存储过程调用
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,怎样使用MyBatis轻松实现递归查询与存储过程调用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。递归调用由于部门的层级不可控,因此如果
千家信息网最后更新 2024年11月14日怎样使用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安全错误
数据库的锁怎样保障安全
软件开发学习app
美国阿帕网络技术
4核4g服务器能干什么
imf cpis 数据库
360天擎网络安全
网络安全中报超预期的龙头股
奉化嵌入式软件开发设计
材料价格数据库框架体系
四送一服企业网络安全
数据库i o性能好坏
联想服务器u盘安装
如何解析域名服务器
山东电脑软件开发多少钱
linux服务器扩展分区
流云网络技术有限公司
盗版软件开发出的软件上线
以下哪些是团购数据库
咸宁市青少年网络技术竞赛
中国省市区数据库
诛仙自设服务器
美国阿帕网络技术
优粉网络技术总监
长春市佳路软件开发有限公司
取数据中最大的时间的数据库
服务银行的软件开发公司
小学网络安全自查简讯
两百块组装个服务器
aix web服务器
江苏通信网络技术报价
vb 2010 读取数据库