专栏首页带你回家Oracle 递归sql,mybatis的递归查询,与存储过程调用

Oracle 递归sql,mybatis的递归查询,与存储过程调用

Oralce 递归sql

一、查询所有子节点

SELECT *
FROM district
START WITH NAME ='平昌县'
CONNECT BY PRIOR parent_id=ID

二、查询所有父节点

SELECT *
FROM district
START WITH NAME ='平昌县'
CONNECT BY PRIOR parent_id=ID

这个语法很好理解,就是递归语法,从什么节点依次去找。。

引用文献:https://www.cnblogs.com/Soprano/p/10659127.html

Mybatis 递归查询

 <resultMap id="getSelf" type="net.chunxiao.vo.GoodsCategoryVo">
        <id column="goodscateid" property="goodscateid"></id>
        <result column="name" property="name"></result>
        <collection property="catelist" select="getCategory" column="goodscateid"></collection>
        <!--查到的cid作为下次的pid-->
    </resultMap>
 
    <select id="getCategory" resultMap="getSelf">
        select * from goods_category where status=0 AND parentid=#{pid}
        ORDER BY displayorder,goodscateid

mybatis 接口:

List<GoodsCategoryVo> getCategory(Integer pid);

实体类:

public class GoodsCategoryVo {
    private Integer goodscateid;
    private String name;
    private Integer parentid;
    private String description;
    private Integer displayorder;
    private Double commissionrate;
    private Integer enabled;
    private List<GoodsCategoryVo> catelist;
……
}

参考文献:https://blog.csdn.net/janet796/article/details/79500349

mybatsi 调用存储过程:

mybatis 接口:

void addDep(@Param("dep") Department department);

xml中写法:

<select id="addDep" statementType="CALLABLE">
    call addDep(#{dep.name,mode=IN,jdbcType=VARCHAR},#{dep.parentId,mode=IN,jdbcType=INTEGER},#{dep.enabled,mode=IN,jdbcType=BOOLEAN},#{dep.result,mode=OUT,jdbcType=INTEGER},#{dep.id,mode=OUT,jdbcType=BIGINT})
</select>

解释:

注意statementType调用表示这是一个存储过程,mode=IN表示这是输入参数,mode=OUT表示这是输出参数,调用成功之后,在service中获取department的id和result字段,就能拿到相应的调用结果了。

参考文献:https://github.com/lenve/vhr/wiki/13.%E9%80%92%E5%BD%92%E6%9F%A5%E8%AF%A2%E4%B8%8E%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E8%B0%83%E7%94%A8

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • maven 创建java 项目

    斯文的程序
  • Spring boot (四) 配置文件讲解

    学习完前面四部曲,大概就知道spring boot 的一些基本概念了,如何配置文件读取,扫包范围。热部署。这些都是简单的。为后面做好基础

    斯文的程序
  • eclipse 出现 debug Line breakpoint 问题解决

    斯文的程序
  • bookStore商城开发文档

    用户通过访问http://www.bookStore.com页面可能访问到书城首面。

    黑泽君
  • 从网络安全服务看网络空间中的私权力(二)

    三、私权力与合法性 在网络空间中,从私权利主体到私权力主体的分化演进,也是一种“新”秩序的诞生。这种秩序是网络空间私权利主体间关系自发演变的产物,其演变的...

    腾讯研究院
  • WCF技术剖析之二十一:WCF基本异常处理模式[中篇]

    通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultException异常),其相关的...

    蒋金楠
  • 设计模式学习笔记-命令模式

    1. 概述   将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的...

    用户1198337
  • python中的传参后的修改问题

    python中传递的参数不是值而是引用就是传递了一个地址,当传递的这个类型不可改的时候(python中只有列表和字典可以改,其他的元组,变量,字符串等都不可改)...

    逐梦的青春
  • 200余行代码,Github 3.4k星,让你实时从视频中隐身

    Jason Mayes 是一名在谷歌工作的资深网页工程师,他长期致力于运用新兴技术提供物联网解决方案。近日,充满奇思妙想的 Mayes 又使用 TensorFl...

    田维常
  • Github 3.4k星,200余行代码,让你实时从视频中隐身

    Jason Mayes 是一名在谷歌工作的资深网页工程师,他长期致力于运用新兴技术提供物联网解决方案。近日,充满奇思妙想的 Mayes 又使用 TensorFl...

    机器之心

扫码关注云+社区

领取腾讯云代金券