MyBatis-plus自带的分页插件Interceptor

mybatis-plus自带了一个分页插件Interceptor,帮我们封装好了分页的功能,节省大量的开发时间。

我们可以看一下mybatis-plus 的官方文档

记录一下我是怎么去使用mybatis-plus分页插件的使用的

  1. 在pom文件中引入mybatis-plus的依赖
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.2</version>
            </dependency>
  1. 创建mybatis-plus分页插件的配置类
import com.baomidou.mybatisplus.annotation.DbType;
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
//@MapperScan("**.mapper")  //官方文档说要加MapperScan
//主要是扫描到mapper包下的接口交给spring管理,我这里在启动类上添加过了,这里就不加了
public class MybatisPlusConfig {
    /**
     * mybatis-plus自带的分页插件
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }
}
  1. UserMapper.class定义查询接口,mapper.xml写查询语句,当然你也可以条件分页查询,在page参数后添加额外的条件即可
public interface UsereMapper extends BaseMapper<User> {

    /**
     * 分页查询
     * @param page
     * @return
     */
    IPage<User> selectPage(Page<User> page);
}
  1. UserMapper.xml,等同于编写一个普通 list 查询,mybatis-plus 自动替你分页
<?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.gxuwz.mapper.UserMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="resultMap" type="com.gxuwz.entity.User">
        <result column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
        <result column="sex" property="sex"/>
        <result column="is_deleted " property="is_deleted "/>
    </resultMap>

    <select id="selectPage" resultMap="resultMap">
        SELECT
            *
        FROM
            app_update
        WHERE
           is_deleted = 0
    </select>
</mapper>
  1. 实现,我这里按实际的业务要求来实现的,前端传来 current当前页,size每页显示多少条数据
    定义一个返回给前端的VO对象,PageVo,返回当前页的数据data,和总记录的条数
    public PageVo<User> selectPage(int current, int size) {
        Page page = new Page(current, size);
        IPage iPage = appUpdateMapper.selectPage(page);
        PageVo<User> pageVo = new PageVo<>();
        pageVo.setData(iPage.getRecords());
        pageVo.setTotal(iPage.getTotal());
        return pageVo;
    }

PageVo 和前端的交互对象

@Data
public class PageVo<T> {
    /**
     * 分页的数据
     */
    @ApiModelProperty(value = "分页的数据")
    private List<T> data;
    /**
     * 数据总条数
     */
    @ApiModelProperty(value = "总记录条数")
    private Long total;
}
  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值