解决mybatis plus 一对多分页查询问题


换了很多姿势使用mybatis-plus分页还是有问题

问题

比如: 订单表跟订单信息表是一对多关系,分页每页查询出来的数据是以订单商品表为主的,万一 一个订单有十个商品的话,那就只能查询一条单了,这明显就存在问题,

我需要的是每页的条数是以订单表为主的,如果你遇到跟我同样的问题请往下看......

mapper层

 /**
     * 分页获取订单数据
     *
     * @param orderPara 订单传参数类
     * @return
     */
    public IPage selectOrdersList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper wrapper, @Param("orderPara") OrderParaVo orderPara);
 /**
     * 获取订单商品信息数据
     *
     * @param orderNo 订单号
     * @return 订单商品数据
     */
    public List selectOrderItemList(String orderNo);

xml

使用collection标签的select属性来映射


...
这里订单表字段忽略

property:  对应映射的订单商品类(private List orderItemsList;)

ofType: 订单商品类的包名路径

select: 查询订单商品的名称

column: 两表关联的条件字段(数据库的)

sql

 
    

注意: orderPara是传值Vo类在mapper层订单的别名,这样使用实体传值的话能传多个参数进来。


    

controller

这里直接调用mapper层了,需要规范的话,在service层写个接口调用mapper,然后controller再调用业务层,所有的业务层代码写在service实现层就好了......

@GetMapping("listOrdersList")
    public AjaxResult test(@RequestBody OrderParaVo orderParaVo) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        Page page = new Page(orderParaVo.getPageNum(), orderParaVo.getPageSize());
        IPage userPageList = ordersMapper.selectOrdersList( page, queryWrapper,orderParaVo);
        return AjaxResult.success(userPageList);
    }

如有其它办法能解决这个问题的话请下方留言哦,非常感谢!