java树结构(父子结构)如何模糊查询?

现有一个类目表,父子结构id,pid。现在有一个功能如下:
image.png
前端通过模糊搜索查询出对应的数据并拼接。
后端mysql,使用了mybatis-plus
各位大佬是否有解决的方法,跪谢~~~

功能参考:微信小商店web端-新增商品

阅读 5.7k
2 个回答

看了下微信的,他有个高亮功能,感觉可能存在es之类的搜索引擎里,存的时候可能就存在 ‘运动户外/运动鞋包/运动鞋’。

你这个的话,用id和pid,假设表结构是这样
image.png

如果mysql8的话,可以用递归,比如要查询包含关键字运动的菜单以及所有父菜单:

with recursive cte as
                   (
                       select * from menu where name like '%运动%'
                       union
                       select m.* from menu m, cte where m.id = cte.pid
                   )
select * from cte

结果:
image.png

你拿到这个结果就可以在服务器端或者前端构建树形结构之类的。

新手上路,请多包涵
@Data
public class GoodsName {

    private String name;
    private GoodsName child;

}

class Search {
    
    public void search(GoodsName goodsName,String searchStr) {
        if (goodsName.getChild() == null) return;
        //数据库查询逻辑
        search(goodsName.getChild(),searchStr);
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题