mybatis 一对多collection结合PageHelper分页

PageHelper分页组件

 

public class PageParam {
    /**
     * 当前页数
     */
    private Integer pageNum;

    /**
     * 分页显示数目
     */
    private Integer pageSize;

}

/**
     * 设置请求分页数据
     */
    protected void startPage(PageParam page) {
        if (StringUtils.isNotNull(page.getPageNum()) && StringUtils.isNotNull(page.getPageSize())) {
            PageHelper.startPage(page.getPageNum(), page.getPageSize());
        }
    }

 

controller

/**
     * 调货列表 
     * 
     * @param pageNum  当前页数
     * @param pageSize 分页数目
     * @return
     */
    @ApiOperation(value = "调货查询")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(PageParam page) {
        startPage(page);
        List<RobOrders> list = robOrdersService.selectRobOrdersList();
        return getDataTable(list);
    }

 

 

/**
     * 响应请求分页数据
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    protected TableDataInfo getDataTable(List<?> list) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(0);
        rspData.setRows(list);
        rspData.setTotal(new PageInfo(list).getTotal());
        return rspData;
    }

 

实体类

/**
 * 调货对象 rob_orders
 * 
 * @author ruoyi
 * @date 2020-05-14
 */
public class RobOrders extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 订单号 */
    private String orderNum;

    /** 收件人姓名 */
    private String receiverName;

    /** 收件人联系电话 */
    private String phone;

    /** 收件人省主键 */
    private Integer province;

    /** 收件人市主键 */
    private Integer city;

    /** 收件人区主键 */
    private Integer area;

    /** 收件人省 */
    private String provinceName;

    /** 收件人市 */
    private String cityName;

    /** 收件人区 */
    private String areaName;

    /** 收件人地址 */
    private String address;

    /** 订单状态 */
    private Integer orderStatus;

    /** 订单总价格 */
    private Double price;

    /** 是否被抢0抢单1已抢 */
    private Integer isGrab;

    /** 关联sys_user的主键 */
    private Integer userId;
    /** 失效时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date failureTime;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /** 有效时间标识 */
    private Integer timeType = 24;

    /** 订单详情list */
    private List<RodOrderDetail> RodOrderDetailList;

}

 

 

/**
 * 调货订单详情对象 rod_order_detail
 * 
 * @author ruoyi
 * @date 2020-05-14
 */
public class RodOrderDetail extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Integer id;

    /** 订单号 */
    private String orderNum;

    /** 书本编号 */
    private String bookId;

    /** 书本isbn */
    private String isbn;

    /** 书本名称 */
    private String title;

    /** 出版社 */
    private String press;

    /** 作者 */
    private String author;

    /** 定价 */
    private Double price;

    /** 销售价 */
    private Double salePrice;

    /** 购买数量 */
    private Integer count;

    /** 书本备注 */
    private String remake;

    /** 书本备注 */
    private String url;

}
 

 

service  和dao层就不写了  自己写方法就行

 

xml:

  <!--子调货详情  -->
    <resultMap type="RodOrderDetail" id="RodOrderDetailResult">
                <result property="id"    column="detail_id"    />
                <result property="orderNum"    column="detail_order_num"    />
                <result property="bookId"    column="book_id"    />
                <result property="isbn"    column="isbn"    />
                <result property="title"    column="title"    />
                <result property="press"    column="press"    />
                <result property="author"    column="author"    />
                <result property="price"    column="detail_price"    />
                <result property="salePrice"    column="sale_price"    />
                <result property="count"    column="count"    />
                <result property="remake"    column="remake"    />
                <result property="url"    column="url"    />     
        </resultMap>
        
     <!--调货表实体  -->
    <resultMap type="RobOrders" id="RobOrdersResult">
        <result property="id"    column="id"    />
        <result property="orderNum"    column="order_num"    />
        <result property="receiverName"    column="receiver_name"    />
        <result property="phone"    column="phone"    />
        <result property="province"    column="province"    />
        <result property="city"    column="city"    />
        <result property="area"    column="area"    />
        <result property="address"    column="address"    />
        <result property="orderStatus"    column="order_status"    />
        <result property="price"    column="price"    />
        <result property="createTime"    column="create_time"    />
        <result property="isGrab"    column="is_grab"    />
        <result property="userId"    column="user_id"    />
        <result property="provinceName"    column="province_name"    />
        <result property="cityName"    column="city_name"    />
        <result property="areaName"    column="area_name"    />
        <result property="failureTime"    column="failure_time"    />
        <result property="payTime"    column="pay_time"    />
        
        <collection property="RodOrderDetailList" ofType="RodOrderDetailResult" javaType="java.util.List"                                column="order_num" select="queryRobOrderDetailByOrderNum">
        </collection>


    </resultMap>
    
    
    
       <!--调货sql  -->

    <sql id="selectRobOrdersVo">
        select a.id, a.order_num, a.receiver_name, a.phone, a.province, a.city, a.area, a.address, a.order_status, a.price,                     a.create_time,a.is_grab, a.user_id,p.name as province_name,c.name as city_name,ar.name as area_name from rob_orders a
        left join province p on p.id=a.province
        left join city c on c.id=a.city
        left join area ar on ar.id=a.area
    </sql>
    
    <!--调货池详情  -->
    <select id="queryRobOrderDetailByOrderNum" parameterType="java.lang.String" resultMap="RodOrderDetailResult">
     select b.id as detail_id, b.order_num as detail_order_num, b.book_id, b.isbn, b.title, b.press, b.author, b.price as detail_price, b.sale_price, b.count, b.remake,b.url from rod_order_detail b where b.order_num=#{orderNum}
    </select>
    
    
    <!-- 调货池列表 -->
    <select id="selectRobOrdersList"  resultMap="RobOrdersResult">
        <include refid="selectRobOrdersVo"/>
        order by a.create_time desc
    </select>

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一对多查询的分页可以使用PageHelper插件来实现,具体步骤如下: 1.在查询方法中使用PageHelper.startPage(pageNum, pageSize)来启动分页pageNum是页码,pageSize是每页显示的记录数。 2.在查询语句中使用LEFT JOIN关联两个表,例如: ``` SELECT a.*, b.* FROM table_a a LEFT JOIN table_b b ON a.id = b.a_id WHERE ... ``` 3.将查询结果组装成你需要的数据结构,例如: ``` public class A { private Long id; private String name; private List<B> bList; // getter, setter } public class B { private Long id; private String name; private Long aId; // getter, setter } ``` 4.在MyBatis的配置文件中配置resultMap,例如: ``` <resultMap id="aResultMap" type="A"> <id property="id" column="a_id"/> <result property="name" column="a_name"/> <collection property="bList" ofType="B"> <id property="id" column="b_id"/> <result property="name" column="b_name"/> <result property="aId" column="b_a_id"/> </collection> </resultMap> ``` 5.在查询方法中使用PageInfo来对查询结果进行分页,例如: ``` PageHelper.startPage(pageNum, pageSize); List<A> aList = aMapper.selectList(); PageInfo<A> aPageInfo = new PageInfo<>(aList); ``` 6.最后将分页结果返回给前端即可,例如: ``` Map<String, Object> result = new HashMap<>(); result.put("list", aPageInfo.getList()); result.put("total", aPageInfo.getTotal()); result.put("pageNum", aPageInfo.getPageNum()); result.put("pageSize", aPageInfo.getPageSize()); ``` 希望这些步骤能够帮助您实现一对多查询的分页
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值