Mybatis-Plus中的分页

目录

一、环境配置

1、pom.xml

2、编辑yml

3、启动类

二、编辑代码

1、配置类

2、pojo对象

3、前端交互VO类

4、mapper层

5、service层

6、统一返回结果

7、controller层

三、测试结果


一、环境配置

1、pom.xml

添加mybatis-plus的依赖

需要注意将原来mybatis的依赖去掉,防止以来之间冲突

        <!--需要注掉mybatis的依赖,防止依赖冲突-->
        <!--spring整合mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

2、编辑yml

添加服务信息以及数据库和mybatis-plus相关信息

#SpringBoot数据源配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root


#SpringBoot整合Mybatis-plus
mybatis-plus:
  #定义别名包 作用: 以后封装POJO对象时自动进行拼接
  type-aliases-package: com.jtdemo.pojo
  #引入mapper配置文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true


server:
  port: 8090
  servlet:
    #项目默认发布路径/根目录
    context-path: /

3、启动类

添加@MapperScan注解

写入mapper层的路径

package com.jtdemo;

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

@SpringBootApplication
@MapperScan("com.jtdemo.mapper")
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }

}

二、编辑代码

 

1、配置类

编辑MybatisPlusConfig配置类

版本比较高的使用这个

package com.jtdemo.config;

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 //标识配置类
public class MybatisPlusConfig {
    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }


}

2、pojo对象

编辑User

package com.jtdemo.pojo;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("user") //让对象与表名一一对应
public class User {

    @TableId(type = IdType.AUTO) //标识主键且主键自增
    @TableField("id")
    private Integer id;
    @TableField("name") //如果属性与字段名称一致(包含驼峰规则),则注释可以省略
    private String name;
    private Integer age;
    private String sex;
}

3、前端交互VO类

编辑EasyUITable

对于使用分页的业务,通常使用此类对象作为返回的交互对象,返回查询的总数以及查询的记录

package com.jtdemo.vo;

import com.jtdemo.pojo.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class EasyUITable {
    //定义总数
    private Long totals;

    //定义记录
    private List<User> rows;
}

4、mapper层

编辑UserMapper类

package com.jtdemo.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jtdemo.pojo.User;
import org.apache.ibatis.annotations.Mapper;


import java.util.List;

@Mapper
public interface UserMapper extends BaseMapper<User> {//泛型一定要添加



}

5、service层

UserService和UserServiceImpl

package com.jtdemo.service;

import com.jtdemo.pojo.User;
import com.jtdemo.vo.EasyUITable;


import java.util.List;


public interface UserService {

    //MP分页
    EasyUITable selectUserPage(Integer page,Integer rows);
}
package com.jtdemo.service.impl;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jtdemo.mapper.UserMapper;
import com.jtdemo.pojo.User;
import com.jtdemo.service.UserService;
import com.jtdemo.vo.EasyUITable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;


    @Override
    public EasyUITable selectUserPage(Integer page, Integer rows) {
        //通过IPage对象将page和rows封装
        IPage iPage=new Page(page,rows);
        QueryWrapper queryWrapper=new QueryWrapper();
        iPage=userMapper.selectPage(iPage,queryWrapper);
        long total= iPage.getTotal();
        List<User> userList=iPage.getRecords();
        return new EasyUITable(total,userList);
    }


}

6、统一返回结果

编辑JsonResult类

package com.jtdemo.jsonResult;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class JsonResult<T> {
    /**
     * 成功
     */
    public static final int SUCCESS = 200;

    /**
     * 没有登录
     */
    public static final int NOT_LOGIN = 400;

    /**
     * 发生异常
     */
    public static final int EXCEPTION = 401;

    /**
     * 系统错误
     */
    public static final int SYS_ERROR = 402;

    /**
     * 参数错误
     */
    public static final int PARAMS_ERROR = 403;

    /**
     * 不支持或已经废弃
     */
    public static final int NOT_SUPPORTED = 410;

    /**
     * AuthCode错误
     */
    public static final int INVALID_AUTHCODE = 444;

    /**
     * 太频繁的调用
     */
    public static final int TOO_FREQUENT = 445;

    /**
     * 未知的错误
     */
    public static final int UNKNOWN_ERROR = 499;

    private int code;
    private String msg;
    private T data;


    public static JsonResult build() {
        return new JsonResult();
    }

    public static JsonResult build(int code) {
        return new JsonResult().code(code);
    }

    public static JsonResult build(int code, String msg) {
        return new JsonResult<String>().code(code).msg(msg);
    }

    public static <T> JsonResult<T> build(int code, T data) {
        return new JsonResult<T>().code(code).data(data);
    }

    public static <T> JsonResult<T> build(int code, String msg, T data) {
        return new JsonResult<T>().code(code).msg(msg).data(data);
    }

    public JsonResult<T> code(int code) {
        this.code = code;
        return this;
    }

    public JsonResult<T> msg(String msg) {
        this.msg = msg;
        return this;
    }

    public JsonResult<T> data(T data) {
        this.data = data;
        return this;
    }


    public static JsonResult ok() {
        return build(SUCCESS);
    }

    public static JsonResult ok(String msg) {
        return build(SUCCESS, msg);
    }

    public static <T> JsonResult<T> ok(T data) {
        return build(SUCCESS, data);
    }

    public static JsonResult err() {
        return build(EXCEPTION);
    }

    public static JsonResult err(String msg) {
        return build(EXCEPTION, msg);
    }


}

7、controller层

编辑UserController类

package com.jtdemo.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jtdemo.jsonResult.JsonResult;
import com.jtdemo.pojo.User;
import com.jtdemo.service.UserService;
import com.jtdemo.vo.EasyUITable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

//@RestController //1.返回数据是JSON数据  2.表示Ajax请求的结束 3.返回值的是字符串本身
// 4.不会执行SpringMVC中的组件 视图解析器
//@Controller     //跳转到指定的页面中 会执行视图解析器 进行路径的拼接 前缀+后缀


@RestController
public class UserController {

    @Autowired
    private UserService userService;


    /**
     * MP分页,分页查询用户信息
     * http://localhost:8090/selectUserPage?page=1&rows=5
     * */
    @GetMapping("/selectUserPage")
    public JsonResult<EasyUITable> selectUserPage(Integer page,Integer rows){
        EasyUITable easyUITable=userService.selectUserPage(page,rows);
        return new JsonResult<>().ok().data(easyUITable);
    }


}

三、测试结果

输入路径:

http://localhost:8090/selectUserPage?page=1&rows=5

结果展示: 

共36条数据,查询到5条

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值