文档章节

【进阶之定义函数】一个查询树结构数据的集合

卯金刀GG
 卯金刀GG
发布于 10/17 10:59
字数 412
阅读 9
收藏 0

1、基本定义

delimiter 自定义符号  -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略

create function 函数名(形参列表) returns 返回类型  -- 注意是retruns

  begin

    函数体    -- 函数内定义的变量如:set @x = 1; 变量x为全局变量,在函数外面也可以使用

    返回值

  end

自定义符号
delimiter ;

示例:

-- 自定义函数
delimiter $$
create function myfun3(ia int, ib int) returns int
begin
    return ia + ib;
end
$$
delimiter ;

2、需求

     2.1 统计文章分类的数量,分类是树形结构,所以有一个先查询分类树形的级别的集合。使用的函数包括FIND_IN_SET

3、实例

DELIMITER $$

USE `hk`$$

DROP FUNCTION IF EXISTS `queryChildren`$$

CREATE DEFINER=`root`@`192.168.2.%` FUNCTION `queryChildren`(tId VARCHAR(4000)) RETURNS VARCHAR(4000) CHARSET utf8
BEGIN
	DECLARE sTemp VARCHAR(4000) DEFAULT '$';
	DECLARE sTempChd VARCHAR(4000) DEFAULT tId;
	
	WHILE sTempChd IS NOT NULL DO
	
	SET sTemp= CONCAT(sTemp,',',sTempChd);
	SELECT GROUP_CONCAT(id) INTO sTempChd FROM hk_filetype WHERE FIND_IN_SET(parentFileTypeId,sTempChd)>0;
	END WHILE;
	
	RETURN sTemp;
    END$$

DELIMITER ;

4、在程序中的使用

<resultMap id="BaseResultMap" type="com.test.model.HkFiletype">
        <id column="ID" jdbcType="VARCHAR" property="id"/>
        <result column="HOSPITALCODE" jdbcType="VARCHAR" property="hospitalcode"/>
        <result column="FILETYPENAME" jdbcType="VARCHAR" property="filetypename"/>
        <result column="PARENTFILETYPEID" jdbcType="VARCHAR" property="parentfiletypeid"/>
        <result column="sorting" jdbcType="INTEGER" property="sorting"/>
        <result column="ISSO" jdbcType="INTEGER" property="isso"/>
        <result column="CONFIRMDATE" jdbcType="TIMESTAMP" property="confirmdate"/>
        <result column="USEREDITFLAG" jdbcType="INTEGER" property="usereditflag"/>
        <association property="totals" javaType="integer" column="id" select="selectTotales">
        </association>
    </resultMap>
 <select id="selectTotales" parameterType="string" resultType="integer">
        SELECT
          COUNT(1) AS totals
        FROM
          hk_file hkf
        WHERE FIND_IN_SET(hkf.`annexTypeCode`,
          (SELECT
            queryChildren (
              #{id}
            )) )
    </select>

 

© 著作权归作者所有

卯金刀GG
粉丝 26
博文 267
码字总数 73686
作品 0
昌平
程序员
私信 提问
【从蛋壳到满天飞】JS 数据结构解析和算法实现-集合和映射

前言 【从蛋壳到满天飞】JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组)、Stacks(栈)、Queues(队列)、LinkedList(链表)、Recursion(递归思想)、BinarySearchTree(二分搜...

哎哟迪奥
03/25
0
0
JavaScript进阶篇

数组 一维 二维 定义方法一: 定义方法二: 以上均表示数组 函数 定义函数: 事件 主要事件表: onbeforeunload 关闭网页前

iceuncle
2017/11/27
0
0
并查集与最小生成树Kruskal算法

一、什么是并查集 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于次数据结构的操作: Find...

席懿
11/04
0
0
Clojure 中的树形数据访问模式

利用函数式 zippers 更新 Java 访问者(Visitor)模式 简介: JVM 语言探索者 Alex Miller 近来发现了使用 Clojure 实现访问者模式的益处。Clojure 是用于 Java 虚拟机的一种函数式 Lisp 变体...

IBMdW
2011/11/08
568
1
Android 进阶之路(我的博客文章目录)

原文地址:http://blog.csdn.net/u011240877 为了方便读者阅读以及自己回顾,总结写过的文章和一些想要写的文章目录如下: 1.Java Java 解惑:Comparable 和 Comparator 的区别 Java 解惑:R...

u011240877
2017/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7 部署 redis 5.0.6 集群

环境 操作系统: CentOS7.7,关闭 firewalld 和 selinux Redis: 5.0.6 master 实例 10.0.4.110:6371 10.0.4.110:6372 10.0.4.110:6373 slave 实例 10.0.4.111:6371 10.0.4.111:6372 10.0.4.1......

俊赛潘安-才比管乐
15分钟前
18
0
怎么录制电脑上视频素材的声音

随着短视频的不断发展人们越来越喜欢利用空闲时间观看一些短视频用以打发零碎的时间,不少人发现这个机遇也匆匆走上制作短视频的道路,在制作短视频时配音是至关重要的,那你知道怎么在视频素...

cenfeng123
24分钟前
4
0
[springboot 开发单体web shop] 6. 商品分类和轮播广告展示

商品分类&轮播广告 因最近又被困在了OSGI技术POC,更新进度有点慢,希望大家不要怪罪哦。 上节 我们实现了登录之后前端的展示,如: 接着,我们来实现左侧分类栏目的功能。 商品分类|Produc...

IsaacZhang
24分钟前
3
0
java 静态代码块,代码块,构造方法执行顺序

回顾一下java的执行顺序 public class Demo { public Demo() { super(); System.out.println("this is Demo"); } static { System.out.println("this is static"); } { System.out.println("......

漫步行者
44分钟前
7
0
滴滴面试题答案思路

1.mysql 1.1.介绍下介绍下innodb的索引类型、数据结构 普通索引,唯一索引,主键索引:也就是聚簇索引,全文索引(FULLTEXT),聚集索引,非聚集索引等。 数据结构B+树: B+树特点 1.矮胖型,...

指尖Coding
46分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部