【无标题】

本文介绍了在Mybatis中,当Controller返回值为PageInfo且仅获取ID时,如何通过巧妙操作提高查询效率,避免直接查询大量列带来的性能问题。作者分享了使用PageHelper的特定场景和替代策略。
摘要由CSDN通过智能技术生成

mybatis查询优化之骚操作

前提你们controller的返回值是com.github.pagehelper.PageInfo里面再包含实体

重点就是,先根据条件查询出想要的数据,但是sql的返回值只有id。这个时候mybatis就会各种分页的信息封装到Page代理对象里面。然后再根据id反查出所需要的各种列(如果列比较多,直接查询会很慢)再把封装的代理对象Page,里面的值替换成最后根据id查询的值。但是引用不能替换

PageHelper.startPage(pageNum, pageSize);
//这个可以传入条件,重点就是之返回id
List<User> datas = userDao.query();
List<Long> ids = datas.stream().map(User::getId).collect(Collectors.toList());
datas.clear();
if(CollectionUtil.isNotEmpty(ids)){
  List<User> dataList = userDao.queryById(ids);
  datas.addAll(dataList);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值