mysql函数

xiaoxiao2021-02-28  74

mysql函数: create function 方法名(参数) returns 返回值类型 begin end 应用场景:最近工作中遇到一个需求,根据一张表的id获取次id下所有的子id 可以使用递归通过Java代码实现. 思路如下: 1:定义一个方法 1:根据id 通过select id(表中的主键) form 表明 where pid(表中父id列) = id(传入的参数) 2:遍历这些集合(List) 在调用这个方法即可 如: /** * 根据企业id递归查找所有的子公司 * @param companyId * @param list */ public static void getCompanyIdsByRecursion1(String companyId,List list){

Example example = new Example(Company.class); Criteria criteria = example.createCriteria(); criteria.andEqualTo("pid", companyId); List<Company> selectByExample = companyDao.selectByExample(example); //遍历子节点 for (Company entity : selectByExample) { list.add(entity.getId()); getCompanyIdsByRecursion1(entity.getId(), list); } }

但是最终还是在数据库中定义个一个函数: 其中:id 是表中的主键字段,pid也是表中的字段 CREATE FUNCTION getChildrenCompanyIds(companyId VARCHAR(200)) RETURNS varchar(4000) CHARSET utf8 SQL SECURITY INVOKER BEGIN DECLARE sTemp VARCHAR(4000); DECLARE sTempChd VARCHAR(4000);

SET sTemp = ‘$’; SET sTempChd = companyId;

WHILE sTempChd is not NULL

SET sTemp = CONCAT(sTemp,’,’,sTempChd); SELECT group_concat(id) INTO sTempChd FROM 表名 where FIND_IN_SET(pid,sTempChd)>0; END WHILE; SET sTemp = substring(sTemp,3);

return sTemp; END

转载请注明原文地址: https://www.6miu.com/read-21438.html

最新回复(0)