【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程

前言

涉及的技术栈:springboot、mybatis、分页插件pagehelper、Druid数据源

gitee源码地址https://gitee.com/shawsongyue/sevenhee_modules/tree/master/springboot_mybatis

1.基础maven依赖

<!--MyBatis分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
        </dependency>
        <!--druid数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--Mysql数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        
        <!--单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
        <!--集成springmvc框架并实现自动配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

2.目录结构与配置文件

#服务配置
server:
  port: 8080
#spring配置
spring:
  #数据源
  datasource:
    url: jdbc:mysql://localhost:3306/sevenhee_modules?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: gnnykj.2020
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 30000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: true
      test-on-return: false
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      filter:
        stat:
          merge-sql: true
          slow-sql-millis: 5000
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        session-stat-enable: true
        session-stat-max-count: 100
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        reset-enable: true
        login-username: admin
        login-password: admin
        allow: 127.0.0.1
#mybatis配置
mybatis:
  #xml文件配置路径(两种选择)
  mapper-locations:
    #资源目录
#    - classpath:mapper/*.xml
    #src文件目录下
    - classpath*:com/**/mapper/impl/*.xml
  #实体类别名配置
  type-aliases-package: com.xsy.sevenhee.modules.entity
#分页插件配置
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

3.创建数据库表

4.创建实体层(SysUser.class)

import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
 * 系统用户
 *
 * @author xiaosongyue
 * @date 2021/04/14 15:22:11
 */
@Data
@NoArgsConstructor
public class SysUser {
    private Long id;
    private String username;
    private String password;
    private Date createTime;
    private Date updateTime;
    private int deleted;
    private int version;
}

4.创建mapper层(SysUserMapper.class)

import com.xsy.sevenhee.modules.entity.SysUser;
import java.util.List;
/**
 * 系统用户映射器
 *
 * @author xiaosongyue
 * @date 2021/04/14 15:17:17
 */
public interface SysUserMapper {
    /**
     * 查询全部系统用户
     *
     * @return {@link List<SysUser>}
     */
    List<SysUser> selectAllSysUser();
    /**
     * 插入系统用户
     *
     * @param sysUser 系统用户
     * @return int
     */
    int insertSysUser(SysUser sysUser);
    /**
     * 删除系统用户
     *
     * @param id id
     * @return int
     */
    int deleteById(Long id);
    /**
     * 更新系统用户
     *
     * @param sysUser 系统用户
     * @return int
     */
    int updateSysUserById(SysUser sysUser);
}

4.创建xml映射文件(SysUserMapper.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.xsy.sevenhee.modules.mapper.SysUserMapper">
    <select id="selectAllSysUser" resultType="SysUser">
        select * from sys_user
    </select>
    <insert id="insertSysUser" parameterType="SysUser">
        insert into sys_user values (#{id},#{username},#{password},#{createTime},#{updateTime},#{deleted},#{version})
    </insert>
    <delete id="deleteById" parameterType="Long">
        delete from sys_user where id=#{id}
    </delete>
    <update id="updateSysUserById" parameterType="SysUser">
        update sys_user set username=#{username},password=#{password},create_time=#{createTime},update_time=#{updateTime},deleted=#{deleted},version=#{version} where id=#{id}
    </update>
</mapper>

6.创建service层(SysUserService.class)

import com.github.pagehelper.PageInfo;
import com.xsy.sevenhee.modules.entity.SysUser;
import java.util.List;
/**
 * 系统用户服务
 *
 * @author xiaosongyue
 * @date 2021/04/14 15:53:23
 */
public interface SysUserService {
    /**
     * 获取全部用户
     *
     * @return {@link List<SysUser>}
     */
    List<SysUser> getAllSysUser();
    /**
     * 添加系统用户
     *
     * @param sysUser 系统用户
     * @return int
     */
    int addSysUser(SysUser sysUser);
    /**
     * 根据id删除用户
     *
     * @param id id
     * @return int
     */
    int deleteById(Long id);
    /**
     * 根据用户id修改用户信息
     *
     * @param sysUser 系统用户
     * @return int
     */
    int modifySysUserById(SysUser sysUser);
    /**
     * 获取全部用户,分页
     *
     * @param pageNum  页码
     * @param pageSize 页面大小
     * @return {@link PageInfo<SysUser>}
     */
    PageInfo<SysUser> getAllSysUserByPage(Integer pageNum, Integer pageSize);
}

6.创建service层实现类(SysUserServiceImpl.class)

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xsy.sevenhee.modules.entity.SysUser;
import com.xsy.sevenhee.modules.mapper.SysUserMapper;
import com.xsy.sevenhee.modules.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * 系统用户服务实现类
 *
 * @author xiaosongyue
 * @date 2021/04/14 15:55:13
 */
@Service
public class SysUserServiceImpl implements SysUserService {
    @Autowired
    private SysUserMapper sysUserMapper;
    @Override
    public List<SysUser> getAllSysUser() {
        return sysUserMapper.selectAllSysUser();
    }
    @Override
    public PageInfo<SysUser> getAllSysUserByPage(Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        return new PageInfo<>(sysUserMapper.selectAllSysUser());
    }
    @Override
    public int addSysUser(SysUser sysUser) {
        return sysUserMapper.insertSysUser(sysUser);
    }
    @Override
    public int deleteById(Long id) {
        return sysUserMapper.deleteById(id);
    }
    @Override
    public int modifySysUserById(SysUser sysUser) {
        return sysUserMapper.updateSysUserById(sysUser);
    }
}

7.创建controller层(SysUserController.class)

import com.github.pagehelper.PageInfo;
import com.xsy.sevenhee.modules.entity.SysUser;
import com.xsy.sevenhee.modules.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
 * 系统用户控制器
 *
 * @author xiaosongyue
 * @date 2021/04/14 16:24:54
 */
@RestController
@RequestMapping("/sys_user")
public class SysUserController {
    @Autowired
    private SysUserService sysUserService;
    /**
     * 插入
     */
    @GetMapping("/insert")
    public void insert(){
        SysUser sysUser = new SysUser();
        sysUser.setId(22L);
        sysUser.setCreateTime(new Date());
        sysUser.setPassword("1234567");
        sysUser.setUpdateTime(new Date());
        sysUser.setDeleted(0);
        sysUser.setVersion(1);
        sysUser.setUsername("xsxsxsxs");
        System.out.println(sysUserService.addSysUser(sysUser));
    }
    /**
     * 删除通过id
     */
    @GetMapping("/deleteById")
    public void deleteById(){
        System.out.println(sysUserService.deleteById(22L));
    }
    /**
     * 更新
     */
    @GetMapping("/update")
    public void update(){
        SysUser sysUser = new SysUser();
        sysUser.setUsername("opopop");
        sysUser.setId(22L);
        sysUser.setCreateTime(new Date());
        sysUser.setPassword("1234dfasdsds567");
        sysUser.setUpdateTime(new Date());
        sysUser.setDeleted(0);
        sysUser.setVersion(1);
        System.out.println(sysUserService.modifySysUserById(sysUser));
    }
    /**
     * 获取所用用户
     */
    @GetMapping("/getAllSysUser")
    public void getAllSysUser(){
        List<SysUser> sysUsers = sysUserService.getAllSysUser();
        System.out.println("测试:"+sysUsers);
    }
    /**
     * 获取所有用户并分页
     */
    @GetMapping("/getAllSysUserByPage")
    public void getAllSysUserByPage(){
        PageInfo<SysUser> sysUsers = sysUserService.getAllSysUserByPage(1,3);
        System.out.println("分页测试:"+sysUsers);
    }
}

8.创建主启动类(MybatisApplication.class)

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * mybatis应用程序
 *
 * @author xiaosongyue
 * @date 2021/04/14 15:44:28
 */
@SpringBootApplication
public class MybatisApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class,args);
    }
}

9.访问controller层接口测试

访问路径:http://localhost:8080/sys_user/getAllSysUser

10.访问druid数据源监控

访问路径:http://localhost:8080/druid/login.html

账号密码都是:admin

11.gitee源码地址:

https://gitee.com/shawsongyue/sevenhee_modules/tree/master/springboot_mybatis

12.若有问题,欢迎交流

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
86 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
3天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
12天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
1月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
105 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
52 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
21天前
|
Java 程序员 调度
Java|PageHelper 怎么自作主张帮我分页?
没有调用 PageHelper.startPage,查询怎么也被自动分页了?
13 2
|
2月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
1月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
120 0
|
6月前
|
XML Java 关系型数据库
【SpringBoot系列】SpringBoot集成Fast Mybatis
【SpringBoot系列】SpringBoot集成Fast Mybatis
|
6月前
|
XML SQL Java
ClickHouse【SpringBoot集成】clickhouse+mybatis-plus配置及使用问题说明(含建表语句、demo源码、测试说明)
ClickHouse【SpringBoot集成】clickhouse+mybatis-plus配置及使用问题说明(含建表语句、demo源码、测试说明)
692 0