SpringBoot使用Mybatis-Plus进行分页

SpringBoot使用Mybatis-Plus进行分页2.1

  • 简介
    • 1:导入所需的依赖
    • 2:配置 application.properties 或者 application.yml
    • 3:编写实体类
    • 4:编写配置类
    • 4:编写mapper
    • 5:测试
    • 4:获取分页的一些基础信息,页数,当前页码,信息总条数

简介

本文讲述SpringBoot使用Mybatis-Plus进行分页,以及简单的测试
如果尚前不会配置Mybatis-plus,前往我的另一篇文章,SpringBoot集成Mybatis-Plus
https://blog.csdn.net/Memory_loss/article/details/102534030

1:导入所需的依赖

这里是我的pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
        
		<!--mysql->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--lombok 可选-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--  mybatis-plus  -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        
    </dependencies>

2:配置 application.properties 或者 application.yml

我这里以 properties 为例

#我是用的是mysql8.0如果是其他版本,请注意url与driver的区别,切勿直接粘贴复制
spring.datasource.url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
logging.level.cn.bdqn.mapper = debug
server.port=8081

3:编写实体类

User实体类

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * @author zouxm
 * @create 2019-10-11 9:14
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
//上面是lombok,作用是生成get,set,有参无参与连写set,有兴趣的可以去安装找一下这个插件
@TableName("t_user")
public class User {
    private int id;
    private String name;
    private int age;
    private String email;
    private String password;
}

4:编写配置类

/**
 * @author zouxm
 * @create 2019-10-11 17:37
 */
//Spring boot方式
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        // paginationInterceptor.setLimit(500);
        return paginationInterceptor;
    }
}

4:编写mapper

  1. IUserMapper
  2. 继承BaseMapper泛型填写实体类,使用注解或者xml编写基本的sql,入参 Page
/**
 * @author zouxm
 * @create 2019-10-11 16:29
 */
public interface UserMapper extends BaseMapper<User> {

}

进入Page会发现这与我们不适用mybatis需要手动编写时功能差不多的一个类,这样我们就理解了
SpringBoot使用Mybatis-Plus进行分页_第1张图片

5:测试

  1. 基础测试
    使用Spirng自带的测试类去测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class Sb0707MybatisPlusApplicationTests {
	@Autowired
    UserMapper userMapper;
 	@Test
    public void pluspage() {
    /**
    *	page第一个参是当前页码 第二个参数是 每页大小
    *	这里我查找的是 第二页 每页定为三条数据
    */
        IPage<User> page = userMapper.selectPage(new Page<>(2, 3), null);
        List<User> users = page.getRecords();
        users.forEach(System.out::println);
    }
}

测试结果

SELECT id,password,name,email,age FROM t_user LIMIT ?,? 
Total: 3
User{id=5, name='Billie', age=24, email='[email protected]', password='123456'}
User{id=6, name='zxp', age=10, email='[email protected]', password='123456'}
User{id=7, name='zhang', age=12, email='[email protected]', password='123456'}
  1. 带条件的查询分页
@Test
    public void pluspage() {
        QueryWrapper<User> wapper = new QueryWrapper<>();
        wapper.like("name", "z");
        IPage<User> page = userMapper.selectPage(new Page<>(1, 4), wapper);
        List<User> users = page.getRecords();
        users.forEach(System.out::println);
    }

测试结果

Preparing: SELECT id,password,name,email,age FROM t_user WHERE (name LIKE ?) LIMIT ?,? 
Parameters: %z%(String), 3(Long), 3(Long)
Total: 3
User{id=10, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=11, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=12, name='zxp', age=18, email='[email protected]', password='123456'}

4:获取分页的一些基础信息,页数,当前页码,信息总条数

查询的时候我们发现,执行的SQL不仅仅是获取信息,比如下面

SELECT COUNT(1) FROM t_user WHERE (name LIKE ?) 

当我们使用分页的过程中,可以获取我们常用的设置信息

  @Test
    public void pluspage() {
        QueryWrapper<User> wapper = new QueryWrapper<>();
        wapper.like("name", "z");
        IPage<User> page = userMapper.selectPage(new Page<>(2, 3), wapper);
        List<User> users = page.getRecords();
        System.out.println("pages===>" + page.getPages());
        System.out.println("CurrentNo===>" + page.getCurrent());
        System.out.println("total===>" + page.getTotal());
        users.forEach(System.out::println);
    }

结果

pages===>4
CurrentNo===>2
total===>11
User{id=10, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=11, name='zxp', age=18, email='[email protected]', password='123456'}
User{id=12, name='zxp', age=18, email='[email protected]', password='123456'}

#结尾
本文章参考 mybatis-plus 中文文档
https://mp.baomidou.com/guide/

你可能感兴趣的:(SpringBoot学习记录,#)