TK-MyBatis分页查询怎么使用
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,本篇内容介绍了"TK-MyBatis分页查询怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!记
千家信息网最后更新 2024年11月26日TK-MyBatis分页查询怎么使用
本篇内容介绍了"TK-MyBatis分页查询怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
记 tkMybatis 查询出一个 List集合 该集合已经做好了一层分页Page封装 即查询出的list 使用类型判断 instanceof Page 为true
但是,中途不明白这是一个带分页的集合,把查询出的结果集又做了一层封装 需要返回的对象类型为GoodsCategoryDTO,代码如下:
// 商品集合 ListgoodsCategorys = goodsLists.stream().map(x->{ GoodsCategoryDTO goodsDTO = new GoodsCategoryDTO(); goodsDTO.setGoodsId(x.getGoodsId()); // 价格,名字 if(x.getPriceInfo().getPriceValue() == null && x.getPriceInfo().getPriceType() == null){ goodsDTO.setOriginalPrice(x.getPriceInfo().getOriginalPrice()); }else { goodsDTO.setOriginalPrice(x.getPriceInfo().getOriginalPrice()); goodsDTO.setPrice(x.getPriceInfo().getPriceValue() == null ? new BigDecimal(""): x.getPriceInfo().getPriceValue()); goodsDTO.setGoodsLable(x.getPriceInfo().getPriceName()); } goodsDTO.setTitle(x.getGoodsName()); goodsDTO.setSubTitle(x.getGoodsSubname()); goodsDTO.setImg(x.getGoodsImage()); goodsDTO.setSkuId(x.getSkuId()); return goodsDTO; }).collect(Collectors.toList()); return goodsCategorys;
从字面意思上理解 没有问题 返回一个需要出里商品的集合 在controller里面做分页的时候new 一个PageInfo 把该集合传入 代码如下:
PageHelper.startPage(goodsParam.getPage(), goodsParam.getSize()); // 设置分页值 // 返回值 ListgoodsCategoryDTO = goodsService.getGoodsCategoryInfo(goodsParam); PageInfo pageInfo = new PageInfo<>(goodsCategoryDTO); return ResultGenerator.genSuccessResult("返回数据成功", pageInfo);
但是万万没有想到,在创建分页对象PageInfo过程中 goodsCategoryDTO这个集合来判断分页形式,然后根据page 获取当前页pageNum和pageSize和pageTotal,但是如果goodsCategoryDTO 使用instanceof 判断一直是Collection 无法分页。
public PageInfo(Listlist, int navigatePages) { if (list instanceof Page) { Page page = (Page) list; this.pageNum = page.getPageNum(); this.pageSize = page.getPageSize(); this.pages = page.getPages(); this.list = page; this.size = page.size(); this.total = page.getTotal(); //由于结果是>startRow的,所以实际的需要+1 if (this.size == 0) { this.startRow = 0; this.endRow = 0; } else { this.startRow = page.getStartRow() + 1; //计算实际的endRow(最后一页的时候特殊) this.endRow = this.startRow - 1 + this.size; } } else if (list instanceof Collection) { this.pageNum = 1; this.pageSize = list.size(); this.pages = this.pageSize > 0 ? 1 : 0; this.list = list; this.size = list.size(); this.total = list.size(); this.startRow = 0; this.endRow = list.size() > 0 ? list.size() - 1 : 0; } if (list instanceof Collection) { this.navigatePages = navigatePages; //计算导航页 calcNavigatepageNums(); //计算前后页,第一页,最后一页 calcPage(); //判断页面边界 judgePageBoudary(); } }
想了一下 使用如下的解决办法可能会好一点 直接new 一个新的Page对象 获取新的pageNum pageSize Total 然后赋值给该对象 ,然后遍历集合中goodsList 然后做二次封装 添加到 page集合 最后返回该集合即可。
/** * 查询分类商品信息 * @param goodsParam * @return */ public ListgetGoodsCategoryInfo (GoodsParam goodsParam){ // 查询出已经实现和封装好的Page的list List goodsLists = queryGoodsByCat(goodsParam); if (goodsLists instanceof Page>) { Page goodsPage = (Page ) goodsLists; return new Page () {{ this.setPageNum(goodsPage.getPageNum()); this.setPageSize(goodsPage.getPageSize()); this.setTotal(goodsPage.getTotal()); this.setPages(goodsPage.getPages()); this.addAll(goodsPage.stream().map(goods -> new GoodsCategoryDTO() {{ this.setGoodsId(goods.getGoodsId()); this.setTitle(goods.getGoodsName()); this.setSubTitle(goods.getGoodsSubname()); this.setImg(goods.getGoodsImage()); this.setSkuId(goods.getSkuId()); if(goods.getPriceInfo().getPriceValue() == null && goods.getPriceInfo().getPriceType() == null){ this.setOriginalPrice(goods.getPriceInfo().getOriginalPrice()); }else { this.setOriginalPrice(goods.getPriceInfo().getOriginalPrice()); this.setPrice(goods.getPriceInfo().getPriceValue() == null ? new BigDecimal(""): goods.getPriceInfo().getPriceValue()); this.setGoodsLable(goods.getPriceInfo().getPriceName()); } }}).collect(Collectors.toList())); }}; } else { throw new IllegalStateException("goods list must be instance of Page"); } }
"TK-MyBatis分页查询怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
查询
对象
封装
商品
实际
代码
内容
时候
更多
知识
类型
结果
过程
实用
特殊
成功
学有所成
接下来
价格
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
图书编目买什么数据库
wind数据库可做的研究
数据库法学济南大学
对于网络安全法的解析
家用宽带可以带动服务器吗
jsp怎么取数据库的数据
无锡软件开发项目
三门峡市网络安全
举例几个常用的医学文献数据库
从dhcp服务器获取ip失败
数据库chuck
服务器网卡如何重装系统
软件开发相关专业介绍
电信网络安全员
明日之后服务器是什么样的
手机软件开发的需求分析
上海ntp时间服务器
攻击服务器软件
国家安全机关网络技术侦查
2021网络安全的现状
关于服务器安全配置文件
数据库安装要不要流量
微信建群 网络安全
hp服务器做raid
我的世界ctd服务器怎么发全部消息
如何实现一流管理服务器
win10服务器系统
惠山区委网络安全和信息化
无锡电商软件开发咨询热线
宝德服务器默认管理口密码