先在数据库里面执行
CREATE FUNCTION `getBaseTypeLst`(rootId INT)
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 base_type where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
base_type是表名
parent_id是字段
然后mybatis调用
<select id="getBaseTypeByParentId" resultType="BaseTypeVO">
<include refid="sql"/> FROM BASE_TYPE WHERE FIND_IN_SET(ID,getBaseTypeLst(#{parentId}));
</select>
参数是parentId