天天看點

MybatisPlus實作分頁查詢資料庫

1、在SpringBoot項目中寫一個請求接口實作分頁查詢 接口代碼:

/**
     * 擷取參數清單,分頁
     *
     * @param
     * @return
     * @throws Exception
     */
    @GetMapping("/v1/zdyl/lcoModel/get/list")
    public ResultJson lcoModelGetList(HttpServletRequest request) throws Exception {
        Map<String, Object> data = new HashMap<>();
        int pageIndex = 1;
        int pageSize = 9;
        if (request.getParameter("pageIndex") != null
                && request.getParameter("pageSize") != null
                && !request.getParameter("pageIndex").equals("")
                && !request.getParameter("pageSize").equals("")) {
            pageIndex = Integer.parseInt(request.getParameter("pageIndex"));
            pageSize = Integer.parseInt(request.getParameter("pageSize"));
        }
        //條件構造器
        QueryWrapper<LcoModel> lcoModelEntityWrapper = new QueryWrapper<>();
        lcoModelEntityWrapper.orderByDesc("create_time");
        if (request.getParameter("name") != null && !request.getParameter("name").equals(""))
            lcoModelEntityWrapper.like("name", request.getParameter("name"));
        Page<LcoModel> lcoModelPage = (Page<LcoModel>) ilCoModelService.page(new Page<LcoModel>(pageIndex, pageSize), lcoModelEntityWrapper);
        data.put("total", lcoModelPage.getTotal());
        data.put("data", lcoModelPage.getRecords());
        return ResultJson.ok("擷取參數清單成功!", data);
    }
           

其中的傳入參數類型是:HttpServletRequest,請求的url格式是:

http://localhost:8899/v1/zdyl/lcoModel/get/list?pageIndex=2&pageSize=3

(如果請求接口中傳入的參數是@PathVariable,則接口請求格式直接是斜杠後面跟參數即可,例如:

http://localhost:8899/v1/zdyl/lcoModel/get/detail/1201c5e6-4b4b-4fb8-995f-b0677c681178)

2、語句:  @ConfigurationProperties(prefix = "spring.datasource")   的意思是從 

spring.datasource 

這個目錄下面讀取配置。

spring:
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    jdbc-url: jdbc:mysql://shujvku.mysql.rds.aliyuncs.com:3306/dm?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf-8
    username: yonghuming
    password: mima
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20
           

3、寫完上述的接口後,發現查詢的時候沒有實作分頁,還是所有的資料都查出來了,檢查後發現沒有進行mybatis-plus分頁插件的配置,添加上MyBaties-Plus配置類:

package com.zdyl.devicemanagement.config;


import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@MapperScan("com.example.demo.**.mapper")
@Configuration
public class MybatisConfig {

    /**
     * 資料源配置
     *
     * @return
     */
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * mybatis-plus分頁插件<br>
     * 文檔:http://mp.baomidou.com<br>
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
           

其中:

@MapperScan("com.example.demo.**.mapper")
           

這一行可以代替Mapper類中的@Mapper注解。