Bootstrap

MybatisPlus 分页查询的实现

官网的文档描述的支持多个数据库支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库。

架构

源代码地gitee  mybatis-plus: mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com

官网的文档:

分页插件 | MyBatis-Plus

pom文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>



    <properties>

        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>

        <!-- 热部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>true</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.4</version>
        </dependency>

<!--        code生成器-->

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.0</version>
        </dependency>



        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>



        <!-- 模板引擎 -->

<!--        <dependency>-->

<!--            <groupId>org.apache.velocity</groupId>-->

<!--            <artifactId>velocity-engine-core</artifactId>-->

<!--            <version>2.0</version>-->

<!--        </dependency>-->



        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>

                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.example.demo.DemoApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.0</version>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork><!--必须添加这个配置-->
                </configuration>
            </plugin>
        </plugins>

    </build>



</project>

数据表

/*

Navicat MySQL Data Transfer



Source Server         : MysqlCentos7

Source Server Version : 50731

Source Host           : 192.168.0.97:3306

Source Database       : test



Target Server Type    : MYSQL

Target Server Version : 50731

File Encoding         : 65001



Date: 2021-10-28 16:35:26

*/



SET FOREIGN_KEY_CHECKS=0;



-- ----------------------------

-- Table structure for test

-- ----------------------------

DROP TABLE IF EXISTS `test`;

CREATE TABLE `test` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT,

  `name` varchar(255) DEFAULT NULL,

  `age` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;



-- ----------------------------

-- Records of test

-- ----------------------------

INSERT INTO `test` VALUES ('1', 'z', '1');

INSERT INTO `test` VALUES ('2', 'z', '2');

INSERT INTO `test` VALUES ('3', 'z', '3');

INSERT INTO `test` VALUES ('4', 'z', '4');

INSERT INTO `test` VALUES ('5', 'z', '5');

INSERT INTO `test` VALUES ('6', 'z', '6');

INSERT INTO `test` VALUES ('7', 'z', '7');

INSERT INTO `test` VALUES ('8', 'z', '8');

INSERT INTO `test` VALUES ('9', 'z', '9');

INSERT INTO `test` VALUES ('10', 'z', '10');

INSERT INTO `test` VALUES ('11', 'z', '11');

INSERT INTO `test` VALUES ('12', 'z', '12');

配置文件application.properties

# 应用名称
spring.application.name=demo
#应用服务 WEB 访问端口
server.port=8094
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://192.168.0.197:3306/test?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=123213

启动类

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {

    public static void main(String[] args) {
        System.out.println("123大苏sss打");
        SpringApplication.run(DemoApplication.class, args);
    }
}

新建po

package com.example.demo.po;



import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableId;

import java.io.Serializable;

import lombok.Data;

import lombok.EqualsAndHashCode;





@Data

@EqualsAndHashCode(callSuper = false)

public class Test implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)

    private Long id;

    private String name;

    private Integer age;

}

新建Mapper

package com.example.demo.mapper;



import com.example.demo.po.Test;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;





public interface TestMapper extends BaseMapper<Test> {



}

新建service

package com.example.demo.service;



import com.baomidou.mybatisplus.core.metadata.IPage;

import com.example.demo.po.Test;

import com.baomidou.mybatisplus.extension.service.IService;

import com.fulong.portal.open5dServer.common.utils.PageInfo;





public interface ITestService extends IService<Test> {

    IPage getProjectTableI(Integer pageNo, Integer pageSize, String name, int age);

}

新建ServiceImpl

package com.example.demo.service.impl;



import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.example.demo.po.PTreeFolder;

import com.example.demo.po.Test;

import com.example.demo.mapper.TestMapper;

import com.example.demo.service.ITestService;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.fulong.portal.open5dServer.common.utils.PageInfo;

import org.springframework.stereotype.Service;



import javax.annotation.Resource;

import java.util.Optional;



@Service

public class TestServiceImpl extends ServiceImpl<TestMapper, Test> implements ITestService {



    @Resource

    TestMapper testMapper;



    @Override

    public IPage getProjectTableI(Integer pageNo, Integer pageSize, String name, int age) {

        IPage<Test> iPage = new Page<Test>(Optional.ofNullable(pageNo).orElse(0), pageSize);

        IPage<Test> list = testMapper.selectPage(iPage, Wrappers.<Test>lambdaQuery()

                .eq(true,Test::getName, name).eq(true,Test::getAge,age));

        return list;

    }

}

最后在controller里调用

  @PostMapping(value = "getProjectTestI")

    public IPage getProjectTestI(Integer pageNo, Integer pageSize, String name, int age){

        return iTestService.getProjectTableI(pageNo,pageSize,name,age);

}

最后忘了添加分页配置文件

package com.example.demo;



import com.baomidou.mybatisplus.annotation.DbType;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;

import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;





@Configuration

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

public class MybatisPlusConfig {

    /**

     * 分页插件

     * @return PaginationInterceptor

     */

//    @Bean

//    public PaginationInterceptor paginationInterceptor() {

//        return new PaginationInterceptor();

//    }



    // 最新版

    @Bean

    public MybatisPlusInterceptor mybatisPlusInterceptor() {

        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));

        return interceptor;

    }

}

测试

;