【环境说明】:

开发工具(idea),JDK1.8,spring-boot2.1.14.RELEASE,mybatis-plus3.4.1

【实现功能】:

1、MyBatis 分页插件:PageHelper

2、MyBatis-Plus分页插件:com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor

【工程源码】

1、项目对象模型(pom.xml)

org.springframework.boot    spring-boot-starter-parent    2.1.14.RELEASEorg.springframework.boot        spring-boot-starter-web    org.springframework.boot        spring-boot-starter-aop    mysql        mysql-connector-java        runtimecom.alibaba        druid-spring-boot-starter        1.1.22com.baomidou        mybatis-plus-boot-starter        3.4.1com.github.pagehelper        pagehelper-spring-boot-starter        1.2.13org.projectlombok        lombok        truesrc/main/java**/*.class**/*.xml

2、配置文件(application.yml)

server:  port: 9080  tomcat:    uri-encoding: utf-8spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8    username: root    password: root    type: com.alibaba.druid.pool.DruidDataSource    druid:      initial-size: 8      min-idle: 1      max-active: 20      max-wait: 60000      time-between-eviction-runsMillis: 60000      min-evictable-idle-timeMillis: 300000      validation-query: select 'x' FROM DUAL      test-on-borrow: false      test-on-return: false      max-open-prepared-statements: 20      max-pool-prepared-statement-per-connection-size: 20      filters: stat      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000      initialization-mode: alwaysmybatis-plus:  # XML路径  mapper-locations: classpath:**/mapper/**/*.xml  typeAliasesPackage: com.what21.demo.pojo.po  # 配置  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl    # 如果查询结果中包含空值的列,则MyBatis在映射的时候,不会映射这个字段    call-setters-on-nulls: true    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射    map-underscore-to-camel-case: true    # 是否开启二级缓存 默认为true    cacheEnabled: false  # 配置默认值(可以不设置)  global-config:    db-config:      # 数据库类型      db-type: MYSQL      # 主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";      id-type: auto      # 字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"      field-strategy: NOT_EMPTY      logic-delete-value: 1      logic-not-delete-value: 0logging:  level:    root: info

3、其它源文件

package com.what21.demo;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.transaction.annotation.EnableTransactionManagement;@EnableTransactionManagement@SpringBootApplication@MapperScan(basePackages ={ "com.what21.demo.mapper"})public class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class);    }}
package com.what21.demo.configure;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.OptimisticLockerInnerInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.DispatcherServlet;@Configurationpublic class CommonConfigure {    /**     * DispatcherServlet配置==>映射前缀以/demo开头     *     * @param dispatcherServlet     * @return     */    @Bean    public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {        return new ServletRegistrationBean(dispatcherServlet, "/demo/*");    }    /**     * mybatis-plus新的分页插件     */    @Bean    public MybatisPlusInterceptor mybatisPlusInterceptor() {        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();        // 分页插件        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));        return mybatisPlusInterceptor;    }}
package com.what21.demo.common;import lombok.Data;import java.io.Serializable;@Datapublic final class ResponseData implements Serializable {    private int code;    private String message;    private T data;    public static ResponseData createBySuccess() {        ResponseData responseData = new ResponseData();        responseData.setCode(1000);        return responseData;    }    public static  ResponseData createBySuccess(T d) {        ResponseData responseData = new ResponseData();        responseData.setCode(1000);        responseData.setData(d);        return responseData;    }    public static ResponseData createByError() {        ResponseData responseData = new ResponseData();        responseData.setCode(1001);        responseData.setMessage("发生错误");        return responseData;    }    public static ResponseData createByError(int code, String message) {        ResponseData responseData = new ResponseData();        responseData.setCode(code);        responseData.setMessage(message);        return responseData;    }}
package com.what21.demo.model;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import lombok.Data;import java.io.Serializable;import java.time.LocalDateTime;@com.baomidou.mybatisplus.annotation.TableName("health_sys_role")@Datapublic class Role implements Serializable {    // 主键,主动增长ID    @TableId(value = "role_id", type = IdType.AUTO)    private Integer roleId;    // 角色名称    private String roleName;    // 角色编号    private String roleCode;    // 角色类型    private String roleType;    // 角色描述    private String roleDesc;    // 创建时间    private LocalDateTime createTime;    // 更新时间    private LocalDateTime updateTime;    // 【删除标识(0-正常,1-删除)】    private Integer delFlag;    // 角色分类    private String roleClassify;    // 是否预定义:0--正常 1—预定义    private Integer predefine;    // 角色创建人ID    private String createUserId;    // 角色创建人名称    private String createUserName;    // 排序号    private Integer sorted;}
package com.what21.demo.model.param;import lombok.Data;@Datapublic class RoleListParam {}
package com.what21.demo.model.param;import lombok.Data;@Datapublic class RoleGetParam {    private Integer id;}
package com.what21.demo.model.param;public class RolePageParam {  }
package com.what21.demo.controller;import com.what21.demo.common.ResponseData;import com.what21.demo.model.param.RoleGetParam;import com.what21.demo.model.param.RoleListParam;import com.what21.demo.model.param.RolePageParam;import com.what21.demo.service.IRoleService;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;@RequestMapping("/role")@RestController@Slf4jpublic class RoleController {    @Autowired    IRoleService roleService;    @RequestMapping(value = "/list", method = {RequestMethod.GET, RequestMethod.POST})    public ResponseData list(HttpServletRequest request, @RequestBody RoleListParam param) {        log.debug("list() start");        ResponseData responseData = null;        try {            responseData = roleService.listRoles(param);        } catch (RuntimeException e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        } catch (Exception e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        }        log.debug("response=" + responseData);        log.debug("list() end");        return responseData;    }    @RequestMapping(value = "/list2", method = {RequestMethod.GET, RequestMethod.POST})    public ResponseData list2(HttpServletRequest request, @RequestBody RoleListParam param) {        log.debug("list2() start");        ResponseData responseData = null;        try {            responseData = roleService.listRoles2(param);        } catch (RuntimeException e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        } catch (Exception e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        }        log.debug("response=" + responseData);        log.debug("list2() end");        return responseData;    }    @RequestMapping(value = "/get", method = {RequestMethod.GET, RequestMethod.POST})    public ResponseData get(HttpServletRequest request, @RequestBody RoleGetParam param) {        log.debug("get() start");        ResponseData responseData = null;        try {            responseData = roleService.getRole(param);        } catch (RuntimeException e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        } catch (Exception e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        }        log.debug("response=" + responseData);        log.debug("get() end");        return responseData;    }    @RequestMapping(value = "/page", method = {RequestMethod.GET, RequestMethod.POST})    public ResponseData page(HttpServletRequest request, @RequestBody RolePageParam param) {        log.debug("page() start");        ResponseData responseData = null;        try {            responseData = roleService.pageRoles(param);        } catch (RuntimeException e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        } catch (Exception e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        }        log.debug("response=" + responseData);        log.debug("page() end");        return responseData;    }    @RequestMapping(value = "/page2", method = {RequestMethod.GET, RequestMethod.POST})    public ResponseData page2(HttpServletRequest request, @RequestBody RolePageParam param) {        log.debug("page2() start");        ResponseData responseData = null;        try {            responseData = roleService.pageRoles2(param);        } catch (RuntimeException e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        } catch (Exception e) {            e.printStackTrace();            responseData = ResponseData.createByError(1001, e.getMessage());        }        log.debug("response=" + responseData);        log.debug("page2() end");        return responseData;    }}
package com.what21.demo.service;import com.what21.demo.common.ResponseData;import com.what21.demo.model.Role;import com.what21.demo.model.param.RoleGetParam;import com.what21.demo.model.param.RoleListParam;import com.what21.demo.model.param.RolePageParam;import java.util.List;public interface IRoleService {    /**     * 使用MyBatis-Plus查询     *     * @param param     * @return     */    public ResponseData listRoles(RoleListParam param);    /**     * 使用MyBatis查询     *     * @param param     * @return     */    public ResponseData listRoles2(RoleListParam param);    /**     * @param param     * @return     */    public ResponseData getRole(RoleGetParam param);    /**     * 使用MyBatis-Plus分页查询     *     * @param param     * @return     */    public ResponseData pageRoles(RolePageParam param);    /**     * 使用MyBatis分页查询     *     * @param param     * @return     */    public ResponseData pageRoles2(RolePageParam param);}
package com.what21.demo.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.what21.demo.common.ResponseData;import com.what21.demo.mapper.RoleMapper;import com.what21.demo.model.Role;import com.what21.demo.model.param.RoleGetParam;import com.what21.demo.model.param.RoleListParam;import com.what21.demo.model.param.RolePageParam;import com.what21.demo.service.IRoleService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import javax.management.relation.RoleList;import java.util.HashMap;import java.util.List;import java.util.Map;@Service("roleService")public class RoleServiceImpl extends ServiceImpl implements IRoleService {    @Autowired    RoleMapper roleMapper;    @Override    public ResponseData listRoles(RoleListParam param) {        QueryWrapper queryWrapper = new QueryWrapper();        // 数据库列名        queryWrapper.eq("del_flag", 0);        List roleList = super.baseMapper.selectList(queryWrapper);        return ResponseData.createBySuccess(roleList);    }    @Override    public ResponseData listRoles2(RoleListParam param) {        Map paramsMap = new HashMap();        paramsMap.put("delFlag", 0);        List roleList = this.roleMapper.queryList(paramsMap);        return ResponseData.createBySuccess(roleList);    }    @Override    public ResponseData getRole(RoleGetParam param) {        QueryWrapper queryWrapper = new QueryWrapper();        // 数据库列名        queryWrapper.eq("del_flag", 0);        queryWrapper.eq("role_id", param.getId());        Role role = super.baseMapper.selectOne(queryWrapper);        return ResponseData.createBySuccess(role);    }    @Override    public ResponseData pageRoles(RolePageParam param) {        int pageNum = 1;  // 当前第几页        int pageSize = 10; // 每页大小        Page page = new Page(pageNum, pageSize);        QueryWrapper queryWrapper = new QueryWrapper();        // 数据库列名        queryWrapper.eq("del_flag", 0);        Page rolePage = super.baseMapper.selectPage(page, queryWrapper);        return ResponseData.createBySuccess(rolePage);    }    @Override    public ResponseData pageRoles2(RolePageParam param) {        int pageNum = 1;  // 当前第几页        int pageSize = 10; // 每页大小        PageHelper.startPage(pageNum, pageSize);        Map paramsMap = new HashMap();        paramsMap.put("delFlag", 0);        List roleList = this.roleMapper.queryList(paramsMap);        PageInfo pageInfo = new PageInfo(roleList);        return ResponseData.createBySuccess(pageInfo);    }}
package com.what21.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.what21.demo.model.Role;import org.springframework.stereotype.Repository;import java.util.List;import java.util.Map;@Repositorypublic interface RoleMapper extends BaseMapper {    public List queryList(Map paramsMap);}
<?xml version="1.0" encoding="UTF-8"?>        select * from `health_sys_role`                        AND del_flag = #{delFlag}            

【测试地址】

访问URI===> /demo/role/page、/demo/role/page2

【数据格式】

MyBatis分页

96b7a5089ee4f65ec28e7cb752274fbf.png

MyBatis-Plus分页

c99be7ab43d69cd384da50b1a67a8139.png
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐