TK-MyBatis分页查询怎么使用
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容介绍了"TK-MyBatis分页查询怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!记
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
黑风asp服务器怎样设置
怎么把安装包拷贝到其他服务器上
免费清除网络大数据库
服务器 清洁
知网数据库期刊类别
r软件中怎样提取行数据库
sql2005 数据库
金山区综合网络技术代理商
潍坊冠霖网络技术有限公司
lol艾欧尼亚服务器维护
数据库开放数据库知识点
手机远程查询电脑数据库吗
回家商贸科技互联网有限公司
逸动xt车机无法连接服务器
数据库查询软件最新正式版
高三网络技术应用知识点视频
车载网络技术功能
服务器管理口web进不去怎么办
我的世界无管理生存服务器
h3c服务器远程管理密码
网络安全保卫大队工作流程
数据库全局搜索
网络服务器日常安全与维护
肯立软件开发公司
提高软件开发质量的流程
黄山昆雄网络技术公司
进口实时数据库系统生产
asp更新数据库方法
舞台特效主板硬件设计 软件开发
web服务器文件下发