public class XTree{
    // 添加子节点
    public static void addNode(String pid,String name) {
        QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
        // 查找父节点
        String sql = "select * from category where id=?";
        Category parent = (Category)runner.query(sql,pid,new BeanHandler(Category.class));
        
        // 创建子节点
        Category son = new Category();
        son.setId(UUID.randomUUID().toString());
        son.setName(name);
        son.setLft(parent.getLft());
        son.setRgt(parent.getLft()+1);
        
        // 更新所有比父节点的右支大的结点
        sql = "update category set lft=lft+2 where lft>=?";
        runner.update(sql,parent.getRgt());
        sql = "update category set rgt=rgt+2 where rgt>=?"
        runner.update(sql,parent.getRgt());
        
        // 添加子节点
        sql = "insert into category(id,name,lft,rgt) values(?,?,?,?)";
        Object[] params = {son.getId(),son.getName(),son.getLft(),son.getRgt()};
        runner.update(sql,params);        
    }
    
    // 找出层级关系
    public static List<Category> findAllParent(int lft,int rgt) {
        QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "select * from category where lft<? and rgt>? order by lft";
        Object[] params = {lft,rgt};
        return runner.update(sql,params,new BeanListHandler(Category.class));        
    }
}

相关文章:

  • 2021-10-21
  • 2021-12-27
  • 2021-07-20
  • 2021-09-27
  • 2021-07-15
  • 2021-09-11
  • 2021-09-29
  • 2022-12-23
猜你喜欢
  • 2021-08-29
  • 2021-07-25
  • 2022-12-23
  • 2022-12-23
  • 2021-09-24
相关资源
相似解决方案