Mybatis-Plus的分页插件的使用和配置

本文介绍了如何在Spring Boot中配置并使用Mybatis-Plus的分页插件,包括创建`MybatisPlusConfig`配置类,设置分页拦截器,以及在测试类中进行分页查询的示例。同时展示了自定义分页功能的UserMapper接口,包含一个根据年龄查询并分页的方法。最后展示了对应的UserMapper.xml映射文件。
摘要由CSDN通过智能技术生成

Mybatis-Plus的分页插件的使用和配置

在com包下创建文件config.MybatisPlusConfig

package com.config;


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration

public class MybatisPlusConfig {
    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

}

创建测试文件

package com.example.mybatisplus;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.mapper.UserMapper;
import com.example.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MybatisPLusPluginsTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void test(){
        //1页  3条数据
        Page<User> page=new Page<>(1,3);
        Page<User> userPage = userMapper.selectPage(page, null);
        System.out.println("总页数: "+userPage.getPages());
        System.out.println("所有数据显示: "+userPage.getRecords());
        System.out.println("总记录数: "+userPage.getTotal());
        userPage.getRecords().forEach(System.out::println);
    }
}

自定义分页功能

package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Map;

@Repository
public interface UserMapper extends BaseMapper<User> {

    //根据id查询用户信息为map集合
    //自定义
    Map<String,Object> selectMapById(Long id);

    //自定义分页功能
    //通过年龄查询用户信息并分页
    //Mybatis-PLus所提供的分页对象,必须位于第一个参数位置
    Page<User> selectPageVo(@Param("page")Page<User> page,@Param("age") Integer age);
}
spring:
  #配置数据源的信息
  datasource:
    #配置数据源的类型
    type:
    #配置数据库的各个信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: '011012'
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #配置Mybatis-plus的全局变量
  global-config:
    db-config:
      #来设置实体类对应表的统一前缀
      table-prefix: t_
      #设置统一的主键生成策略
      id-type: auto
      #配置类型别名所对应的包
      type-aliases-package: com/example/pojo

userMapper.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.mapper.UserMapper">
    <!--Map<String,Object> selectMapById(Long id);-->
    <select id="selectMapById" resultType="map">
        select * from user where id=#{id}
    </select>

    <!--Page<User> selectPageVo(@Param("page")Page<User> page,@Param("age") Integer age);-->
    <select id="selectPageVo" resultType="User">
    select * from user where age>#{age}
    </select>
</mapper>
@Test
    public void test2(){
        Page<User> page=new Page<>(1,3);
        userMapper.selectPageVo(page,20);
        System.out.println(page);
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值