另外再分享一个将上面查询出来的list给转成树形结构的形式给前端返回的一个工具类。
public static List<ReportTemplateVo> listToTree2(List<ReportTemplateVo> list) {
List<ReportTemplateVo> tree = new ArrayList<>();
for (ReportTemplateVo ReportTemplateVo : list) {
if (ReportTemplateVo.getParentId().equals("reportlets")) {
tree.add(findChildren(ReportTemplateVo, list));
return tree;
* 查找ReportTemplateVo的子节点
* @param ReportTemplateVo
* @param list
* @return
private static ReportTemplateVo findChildren(ReportTemplateVo ReportTemplateVo, List<ReportTemplateVo> list) {
List<ReportTemplateVo> children = new ArrayList<>();
for (ReportTemplateVo node : list) {
if (node.getParentId().equals(ReportTemplateVo.getId())) {
children.add(findChildren(node, list));
ReportTemplateVo.setChildren(children);
return ReportTemplateVo;
ReportTemplateVo实体:
public class ReportTemplateVo {
private static final long serialVersionUID = 1L;
* 主键ID
private String id;
* 父节点ID
private String parentId;
* 子孙节点
private List<ReportTemplateVo> children;
@ApiModelProperty("节点是否可以被选中")
private Boolean disabled;
* 节点名称
@ApiModelProperty("节点名称")
private String title;
这两种方法都可以查询到自己想要的数据。然后调用这个方法可以直接生成相应的树形结构,这种东西很常用,又懒得自己写, 所以勤记录,多做备份会省很多事儿,
最后,愿大家都乐意分享一些高效开发小工具,减少重复造轮子~
mysql根据父节点递归查询所有子节点
在开发中,我们经常遇到通过父级节点查询所有子节点的需求,我们知道在mysql中我们可以自定义函数的方式来实现这个功能,但是自定义函数根据父节点递归查询所有子节点的方法需要额外维护函数,故而增加了维护成本,于是我们有了通过直接改用sql
查询的方式来实现递归查询。
根据一个父节点查询所有子节点(包含自身)
SELECT au.id
FROM (SELECT * FROM t_app_user WHERE parent_id IS NOT NULL) au,
DROP TABLE IF EXISTS `merchant_region`;
CREATE TABLE `merchant_region` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NULL DEFAULT NULL,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMAR
四、把代码替换到上图,然后保存
CREATE DEFINER=`admin`@`%` FUNCTION `get_value_of`(in_id varchar(32)) RETURNS varchar(1000) CHARSET utf8
begin
declare ids varchar(1000) default '';
declare tempids varchar(1000);
set tem
select t1.subject_code,t1.psubject_code,t1.id,
if(find_in_set( psubject_code, @pcode ) > 0, @pcode := concat( @pcode, ',', subject_code ), 0 ) as chilCode from
(select f.subject_code,f.psubject_code.