当前位置: 首页 > news >正文

专门做推广的网站吗如何建设网站吸引人

专门做推广的网站吗,如何建设网站吸引人,网络运营seo是什么,企业建站用什么好Java树形结构集合分页需求难点实现第一步:查出所有树形集合数据 (需进行缓存处理)selectTree 方法步骤:TreeUtil类:第二步:分页 GoodsCategoryController分页getGoodsCategoryTree方法步骤:第三…

Java树形结构集合分页

    • 需求
    • 难点
    • 实现
      • 第一步:查出所有树形集合数据 (需进行缓存处理)
          • selectTree 方法步骤:
          • TreeUtil类:
      • 第二步:分页 GoodsCategoryController
          • 分页
          • getGoodsCategoryTree方法步骤:
      • 第三步:前端实现
    • 效果图:

需求

商品类目树数据量大导致加载太慢,需添加一个分页功能。
在这里插入图片描述

难点

  • 树状结构不能用mybatis-plus自带的分页功能,需自己写分页逻辑
  • 因数据量大,需进行缓存处理

实现

第一步:查出所有树形集合数据 (需进行缓存处理)

List<GoodsCategoryTree> resultList = goodsCategoryService.selectTree(null);
    List<GoodsCategoryTree> selectTree(GoodsCategory goodsCategory);
selectTree 方法步骤:

判断key是否存在,如果存在,直接取缓存的值 ,不存在就从数据库查出数据,并把值存到redis里。

    @Overridepublic List<GoodsCategoryTree> selectTree(GoodsCategory goodsCategory) {if(redisTemplate.hasKey(CacheConstants.GOODS_CATEGORY_TREE_KEY)){log.info("商品类目管理 selectTree cache");List<GoodsCategoryTree> cacheList = SpringUtils.getBean(RedisCache.class).getCacheList(CacheConstants.GOODS_CATEGORY_TREE_KEY);return cacheList;}log.info("商品类目管理 selectTree db");List<GoodsCategoryTree> treeList = getTree(this.list(Wrappers.lambdaQuery(goodsCategory)));if (CollUtil.isNotEmpty(treeList)){SpringUtils.getBean(RedisCache.class).setCacheList(CacheConstants.GOODS_CATEGORY_TREE_KEY,treeList);}return treeList;}

其中 getTree()如下:

	/*** @Description: 构建树*/private List<GoodsCategoryTree> getTree(List<GoodsCategory> entitys) {List<GoodsCategoryTree> treeList = entitys.stream().filter(entity -> !entity.getId().equals(entity.getParentId())).sorted(Comparator.comparingInt(GoodsCategory::getSort)).map(entity -> {GoodsCategoryTree node = new GoodsCategoryTree();BeanUtil.copyProperties(entity, node);return node;}).collect(Collectors.toList());return TreeUtil.build(treeList, CommonConstants.PARENT_ID);}
TreeUtil类:
@UtilityClass
public class TreeUtil {/*** 两层循环实现建树** @param treeNodes 传入的树节点列表* @return*/public <T extends TreeNode> List<T> build(List<T> treeNodes, Object root) {List<T> trees = new ArrayList<>();for (T treeNode : treeNodes) {if (root.equals(treeNode.getParentId())) {trees.add(treeNode);
//				trees.sort(Comparator.comparing(TreeNode::getSort));}for (T it : treeNodes) {if (it.getParentId().equals(treeNode.getId())) {treeNode.addChildren(it);
//					treeNode.getChildren().sort(Comparator.comparing(TreeNode::getSort));}}}return trees;}
}

第二步:分页 GoodsCategoryController

	/*** 返回树形集合分页数据** @return*/@ApiOperation(value = "返回树形集合分页数据")@GetMapping("/treePage")public R getGoodsCategoryTree(Page page, GoodsCategory goodsCategory) {//得到所有数据List<GoodsCategoryTree> resultList = goodsCategoryService.selectTree(null);if (resultList != null && resultList.size() > 0) {page.setTotal(resultList.size());}//分页List<GoodsCategoryTree> finalList =  goodsCategoryService.getFinalListByPage(page,resultList);if (finalList != null && finalList.size() > 0) {page.setRecords(finalList);}return R.ok(page);}
分页
	/** 分页查询类目树*/List<GoodsCategoryTree> getFinalListByPage(Page page , List<GoodsCategoryTree> resultList );
getGoodsCategoryTree方法步骤:

参考:java对list集合进行分页
首先把数据根据创建时间倒序排列,再进行分页

	@Overridepublic List<GoodsCategoryTree> getFinalListByPage(Page page, List<GoodsCategoryTree> resultList) {//根据创建时间倒序排列List<GoodsCategoryTree> treeList = resultList.stream().sorted(Comparator.comparing(GoodsCategoryTree::getCreateTime).reversed()).collect(Collectors.toList());//进行分页List<GoodsCategoryTree> subList = treeList.stream().skip((page.getCurrent()-1)*page.getSize()).limit(page.getSize()).collect(Collectors.toList());return subList;}

第三步:前端实现

avue-crud 组件加上:page.sync=“page”

      <avue-crudref="crud":data="tableData":page.sync="page":permission="permissionList":table-loading="tableLoading":option="tableOption":before-open="beforeOpen"v-model="form"@on-load="getPage"@refresh-change="refreshChange"@row-update="handleUpdate"@row-save="handleSave"@row-del="handleDel">

data() 加上:

      page: {total: 0, // 总页数currentPage: 1, // 当前页数pageSize: 20, // 每页显示多少条ascs: [], //升序字段descs: "create_time", //降序字段},paramsSearch: {},date: [],};

重写getPage()方法:

getPage(page, params) {this.tableLoading = true;fetchTree(Object.assign({current: page.currentPage,size: page.pageSize,descs: this.page.descs,ascs: this.page.ascs,beginTime: this.date[0],endTime: this.date[1],},params,this.paramsSearch)).then((response) => {let tableData = response.data.data.records;this.tableData = tableData;this.page.total = response.data.data.total;this.page.currentPage = page.currentPage;this.page.pageSize = page.pageSize;let parentIdDIC = [{id: "0",name: "顶级分类",parentId: "0",},];tableData.forEach((item) => {parentIdDIC.push({id: item.id,name: item.name,parentId: item.parentId,});});this.$refs.crud.DIC.parentId = parentIdDIC;this.tableLoading = false;}).catch(() => {this.tableLoading = false;});},

效果图:

在这里插入图片描述

http://www.yayakq.cn/news/675134/

相关文章:

  • 网站设计做哪些的简约wordpress
  • 网站外链资源模板网站建设 报价
  • 朝阳区规划网站wordpress输出文章id
  • win10系统可以做网站搭建网站建设空格怎么打
  • 网站跟网页的区别展厅展示公司
  • 电脑网站有哪些如何建设像艺龙一样网站
  • 建设网站前的目的高端网页设计培训
  • php网站后台模版视频门户网站建设项目标书
  • 类似于美团的网站开发网站首页的布局设计
  • wordpress网站同步插件企业crm软件
  • 手机网站和电脑网站跳转北京网站设计与网站制作
  • 沈阳工伤保险做实在哪个网站商标设计在线生成器
  • 网站设计公司要多少钱天津市建设 银行网站
  • 网站开发前端框架中国空间站结构示意图
  • 制作动态表情的网站dw网页制作作业
  • o2o网站建设基本流程图书馆网站建设费用
  • 在哪个网站可以做二建的题视频在线观看网站怎么建设
  • 坪山区住房和建设局网站怎么把自己的网站推广
  • asp做网站上传文件系统网站二维码收费怎么做
  • 建设网站赚钱的方法wordpress模版标签
  • 呼伦贝尔网站开发安卓aso优化排名
  • 济南高端网站设计策划沃尔玛网上商城app官方下载
  • 卫生监督 网站建设方案山东城市建设厅网站
  • 重庆专业网站推广报价php做网站视频播放下载功能
  • 商务网站建设与维护 ppt甘肃园区网络搭建
  • 河南网站建设公司|河南网站建设价格费用中小企业公司
  • 企业网站软件网站备案和域名备案
  • 网站建设精准精细快速盘州网站建设
  • 个人网站认证三方物流网站建设
  • 外贸 网站建设wordpress更好域名