Java后端最简单的分页查询

Java后端最简单的分页查询

前言:学了mysql后,我们知道limit的使用方法,可以按照自己规定索引处开始并且查出自己需要的记录。

1.回顾一下limit的使用

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

limit子句可以被用于指定 select语句返回的记录数。我们要关注一下 几点:

  1. 第一个参数指定第一个返回记录行的偏移量

  2. 第二个参数指定返回记录行的最大数目

  3. 如果只给定一个参数:它表示返回最大的记录行数目

  4. 第二个参数为 -1 表示检索从某一个偏移量到记录集的结束所有的记录行
    初始记录行的偏移量是 0(而不是 1)

2.简单使用操作

​ 这里我来个简单的例子,主要带着看一下我们如何使用这种最简单的分页方法,这里需要说一下,这种分页只是最简单的方法,而且只适合数据量不大的。分页查询有很多方法的,后面可以更新其他的方法。那现在我主要用MyBatis+SpringBoot+MySql来做个小demo。

  1. domain中的实体类编写

    public class OrderPO implements Serializable {
    
        /**
         * 主键id
         */
        private Integer id;
    
        /**
         * 购买人
         */
        private String purchaser;
    
        /**
         * 订单时间
         */
        private String orderTime;
    
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getPurchaser() {
            return purchaser;
        }
    
        public void setPurchaser(String purchaser) {
            this.purchaser = purchaser;
        }
    
        public String getOrderTime() {
            return orderTime;
        }
    
        public void setOrderTime(String orderTime) {
            this.orderTime = orderTime;
        }
    
        @Override
        public String toString() {
            return "OrderPO{" +
                    "id=" + id +
                    ", purchaser='" + purchaser + '\'' +
                    ", orderTime='" + orderTime + '\'' +
                    '}';
        }
    }
    
    
  2. dao中的接口编写

    @Mapper
    public interface OrderMapper {
        /**
         * 订单分页查询
         */
        List<OrderPO> findOrderByPage(Map<String,Integer> map);
    
    }
    
  3. 对应的xml文件中的sql编写

    
    
    <mapper namespace="com.wang.order.dao.OrderMapper">
    
        
        <select id="findOrderByPage" parameterType="map" resultMap="allOrder">
            select * from `order` limit #{startIndex},#{pageSize}
        select>
        <resultMap id="allOrder" type="com.wang.order.domain.po.OrderPO">
            <id column="id" property="id">id>
            <result column="purchaser" property="purchaser">result>
            <result column="order_time" property="orderTime">result>
        resultMap>
    
    mapper>
        
    
  4. service层代码编写(由于业务比较简单这里就不写接口了,直接实现类)

    package com.wang.order.service;
    
    import com.wang.order.dao.OrderDetailsMapper;
    import com.wang.order.dao.OrderMapper;
    import com.wang.order.domain.dto.OrderDTO;
    import com.wang.order.domain.dto.OrderDetailsDTO;
    import com.wang.order.domain.po.OrderDetailsPO;
    import com.wang.order.domain.po.OrderPO;
    import com.wang.order.domain.vo.AddOrderVO;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.web.bind.annotation.GetMapping;
    
    import java.util.List;
    import java.util.Map;
    
    @Service
    public class OrderService {
    
        @Autowired
        OrderMapper orderMapper;
    
        /**
         * 分页查询
         */
        public List<OrderPO> findOrderByPage(Map<String,Integer> map){
            return orderMapper.findOrderByPage(map);
        }
    
    }
    
    
  5. controller层的接口设计

    package com.wang.order.controller;
    
    import com.wang.order.domain.po.OrderPO;
    import com.wang.order.service.OrderService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @Controller
    public class OrderController {
    
        @Autowired
        OrderService orderService;
    
        /**
         *
         * @param pageSize 每一页最多的记录数
         * @param pageNum  页码
         * @return
         */
        @PostMapping("/order/findOrderByPage")
        @ResponseBody
        public List<OrderPO> findOrderByPage(Integer pageSize,Integer pageNum){
            Map<String, Integer> map = new HashMap<>();
            map.put("startIndex",pageSize*(pageNum - 1));
            map.put("pageSize",pageSize);
            List<OrderPO> orderByPage = orderService.findOrderByPage(map);
            return orderByPage;
        }
    
    }
    
    
  6. 接口测试

    这里使用的是前后端分离,不管前台,我们可以用postman或者RestServices来测试controller中的接口

Java后端最简单的分页查询_第1张图片
Java后端最简单的分页查询_第2张图片

你可能感兴趣的:(java)