列表数据组装方法

        @Test
	public void test04() {
		System.out.println(getSubListLimitEnd(6, 2, 10));

	}


	/**
	 * 获取子列表的页码
	 * @param masterListSize 主列表所有数据的条数
	 * @param page 当前页码
	 * @param size 当前size
	 * @return 子列表当前页码
	 */
	public int getSubListPage(int masterListSize, int page, int size) {
		int subPage = 1;
		// 计算相差数量
		int count = page * size - masterListSize;

		if(0 >= count) {
			return 0;
		}

		subPage = (count / size) + (count % size != 0 ? 1 : 0);

		return subPage;
	}

	/**
	 * 获取子列表的分页截止点
	 * @param masterListSize 主列表所有数据的条数
	 * @param page 当前页码
	 * @param size 当前size
	 * @return 子列表分页截止点
	 */
	public int getSubListLimitEnd(int masterListSize, int page, int size) {
		int subSize = size;

		// 计算相差数量
		int count = page * size - masterListSize;

		if (count % size != 0) {
			subSize = (count % size);

			int subPage = getSubListPage(masterListSize, page, size);

			if (subPage > 1) {
				subSize += ((getSubListPage(masterListSize, page, size) - 1)
						* size);
			}

                        if(subSize > size) {
				subSize = size;
			}

			System.out.println("subPage:" + subPage);
			System.out.println("subSizeBegin:" + getSubListLimitBegin(masterListSize, page, size));
			System.out.println("subSizeEnd:" + subSize);

		}

		return subSize;
	}

	/**
	 * 获取子列表分页起始点
	 * @param masterListSize 主列表所有数据的条数
	 * @param page 当前页码
	 * @param size 当前size
	 * @return 子列表分页起始点
	 */
	public int getSubListLimitBegin(int masterListSize, int page, int size) {
		int subSize = size;

		// 计算相差数量
		int count = page * size - masterListSize;

		if (count % size != 0) {
			subSize = (count % size);

			int subPage = getSubListPage(masterListSize, page, size);

			if (subPage > 1) {
				subSize += ((getSubListPage(masterListSize, page, size) - 1)
						* size);

				subSize -= (subPage - 1) * size;
			}

			if(subPage == 1) {
				subSize = 0;
			}
		}

		return subSize;
	}

这种一般用于在,有一个列表,他本来有返回数据,当他返回数据不足够你所设置的size时,计算出另一个子列表的查询SQL LIMIT 的两个值,补全第一个列表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们有一个实体类 `Category`,它有以下属性: ```java public class Category { private Long id; private String name; private Long parentId; } ``` 其中 `parentId` 表示当前分类的父级分类 id,如果为 0 则表示根分类。 现在我们需要查询所有子级分类,并将它们组装成 Cascader 数据格式。Cascader 是一个层级选择器,可以用于选择多级分类,格式如下: ```json [ { "value": "1", "label": "分类1", "children": [ { "value": "2", "label": "分类1-1" }, { "value": "3", "label": "分类1-2" } ] }, { "value": "4", "label": "分类2", "children": [ { "value": "5", "label": "分类2-1" } ] } ] ``` Java 代码实现如下: ```java public class CategoryService { // 根据父级分类 id 查询所有子级分类 public List<Category> findChildren(Long parentId) { // 省略查询代码 } // 将分类列表组装成 Cascader 数据 public List<Map<String, Object>> assembleCascaderData(List<Category> categories) { List<Map<String, Object>> result = new ArrayList<>(); for (Category category : categories) { Map<String, Object> item = new HashMap<>(); item.put("value", category.getId().toString()); item.put("label", category.getName()); List<Category> children = findChildren(category.getId()); if (children != null && children.size() > 0) { item.put("children", assembleCascaderData(children)); } result.add(item); } return result; } // 查询所有分类,并将它们组装成 Cascader 数据 public List<Map<String, Object>> findAllCategories() { List<Category> rootCategories = findChildren(0L); return assembleCascaderData(rootCategories); } } ``` 首先,我们定义了一个 `findChildren` 方法,用于查询指定父级分类的所有子级分类。然后,我们定义了一个 `assembleCascaderData` 方法,用于将分类列表组装成 Cascader 数据。 `assembleCascaderData` 方法首先遍历分类列表,将每个分类转换成一个 Map 对象,其中包含 `value` 和 `label` 属性。然后,它递归调用 `findChildren` 方法,将当前分类的子级分类组装成 `children` 属性,最后将当前分类的 Map 对象添加到结果列表中。 最后,我们定义了一个 `findAllCategories` 方法,用于查询所有分类,并将它们组装成 Cascader 数据。它首先调用 `findChildren` 方法,查询根分类的所有子级分类,然后调用 `assembleCascaderData` 方法,将分类列表组装成 Cascader 数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值