mybatis根据父级编号获取所有的子级
2017-04-28 15:12
399 查看
先在数据库里面执行
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
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
相关文章推荐
- sql 递归函数,根据父级ID获取所有子级(含自己)
- 根据父级编号获取无限树结构数据表中所有子节点的数据
- 根据子级ID获取其所有父级
- MSSQL 递归CTE的应用通过子级获取所有对应的父级及其本身(二)
- mysql 根据子级id查询其所有的父级的
- Mysql 根据id查所有父级或子级
- (转)MySql 获取所有级联父级或所有级联子级
- Mysql 根据id查所有父级或子级
- mysql sql 根据父级id查询书所有的子孙级数据,或根据子级id查询对应的父级
- 根据id查询出所有的父级和子级
- mysql 如何根据父级字段得到所有子级
- MSSQL 下递归CTE的应用通过父级获取所有对应的子级节点(一)
- jquery父级元素获取所有子级元素
- 根据数据库名获取所有表及视图名称
- 根据父级获所有子分类(CTE递归)的存储过程
- 根据指定ID,返回包含该ID的所有父级记录
- [.NET]根据某个数值,获取Flags枚举所代表的所有值
- SQL递归函数列出父级的所有子级(ID ParentID模式)
- 根据某个部门ID递归获取其下面所有子部门和本部门信息
- 子级Repeater获取父级Repeater绑定项的值