FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

sonrier/ClosureTableCateogryStore: 基于ClosureTable的数据库无限级分类存储实现。 · GitHub

 
 

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClosureTable

基于ClosureTable的数据库无限级分类存储实现。

ClosureTable以一张表存储节点之间的关系、其中包含了任何两个有关系(祖先与子代)节点的关联信息。其包含3个字段:

  • ancestor 祖先:祖先节点的id
  • descendant 子代:子代节点的id
  • distance 距离:子代到祖先中间隔了几代

ClosureTable能够很好地解决树结构的查询需求。

运行此项目

/*
 * 创建Mybatis的SessionFactory,getMySqlSessionFactory方法需要你自己去实现
 * 或者参考CategoryStoreTest.init()
 */
SqlSessionFactory sessionFactory = getMySqlSessionFactory();
Utils.executeScript(sessionFactory.openSession().getConnection(), "table.sql"); //运行建表脚本

session = sessionFactory.openSession();
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
Category.categoryMapper = mapper;
Repository repository = new Repository(mapper);

Category category = new Category();
category.setName("foo");
category.setDescription("bar");
category.setCover("cover.jpg");

int id = repository.add(category, 0);
Category got = repository.get(id);
Assertions.assertThat(got).isEqualToComparingFieldByField(got);

更多的用法及测试见 CategoryStoreTest.java

配套文章 https://blog.kaciras.net/article/36

About

基于ClosureTable的数据库无限级分类存储实现。

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages


Back | FazBrowse Home | New Git URL