• SpringBoot 调用 mysql存储过程的实战


    网络上写的一堆都不能用的 好吧..

    首先创建 存储过程

    DROP PROCEDURE IF EXISTS dfsSons;
    
    CREATE PROCEDURE dfsSons(IN rootid INT)
    BEGIN
    	DECLARE dep INT;
    	DROP table if exists tmplist;
    	create table tmplist(
    			id int,
    			depth int
    	);
    	SET dep = 0;
    	insert into	tmplist select file_relation_id, dep from file_relation 
    		where file_relation_id = rootid;
    	WHILE ROW_COUNT() > 0 DO
    		SET dep = dep+1;
    		insert into tmplist 
    			select A.file_relation_id, dep from file_relation as A, tmplist as B
    			where A.parent_id = B.id and B.depth = dep - 1;
    	END WHILE;
    END$$
    
    CALL dfsSons(7);
    

    然后在Dao层编写具体的方法

    需要maven中引入jpa,

    本例中实际上不需要返回值,但是mybatis会有返回值,使用void会报错,这里用HashMap兼容了。

    使用的注解和查询一样,但是要指定statementType为CALLABLE。

    @SuppressWarnings("rawtypes")
    @Select("call dfsSons(#{rootid})")
    @Options(statementType= StatementType.CALLABLE )
    public HashMap getTableOfDelete(@Param("rootid") int parent_id);
    

    单元测试

    @Test
    public void testDelete() {
        int parent_id = 7;
        fileRelationDao.getTableOfDelete(parent_id);
        List<Integer> lists = fileRelationDao.selectNeedDeleteId();
        System.out.println(lists.size());
    }
    

    大功告成...

  • 相关阅读:
    12
    11
    10
    9
    8
    6. iOS APP 设计规范大全
    4. iOS中常用演示方法以及利弊
    我要写一篇动态计算tableView-cell高度的随笔
    doclever 5.5.1 安装及升级【原创】
    SPARROW-JS 从0开始写 0依赖,原生JS框架
  • 原文地址:https://www.cnblogs.com/Draymonder/p/10514218.html
Copyright © 2020-2023  润新知