在数据库创建迭代函数
DROP FUNCTION IF EXISTS `getChildrenList`;
CREATE FUNCTION `getChildrenList`(rootId VARCHAR(1000))
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = '$';
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat('子类id') INTO sTempChd FROM 表名 where FIND_IN_SET(父类id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
在mapper.xml中调用
<!-- 通过父类id获取所有子类id -->
<select id="findChildrenList" parameterType="pd" resultType="String">
select
USER_ID
from
SYS_USER_CMS
where
FIND_IN_SET(SUPER,getChildrenList(#{USER_ID}))
</select>