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

简介: 【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.若有问题,欢迎交流

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
1627 4
|
12月前
|
安全 Java
Java之泛型使用教程
Java之泛型使用教程
523 10
|
11月前
|
Oracle Java 关系型数据库
Java 简单教程
Java是跨平台、面向对象的编程语言,广泛用于企业开发、Android应用等。本教程涵盖环境搭建、基础语法、流程控制、面向对象、集合与异常处理,助你快速入门并编写简单程序,为进一步深入学习打下坚实基础。
698 0
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
399 2
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
566 1
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
671 0
|
Java 调度 流计算
基于Java 17 + Spring Boot 3.2 + Flink 1.18的智慧实验室管理系统核心代码
这是一套基于Java 17、Spring Boot 3.2和Flink 1.18开发的智慧实验室管理系统核心代码。系统涵盖多协议设备接入(支持OPC UA、MQTT等12种工业协议)、实时异常检测(Flink流处理引擎实现设备状态监控)、强化学习调度(Q-Learning算法优化资源分配)、三维可视化(JavaFX与WebGL渲染实验室空间)、微服务架构(Spring Cloud构建分布式体系)及数据湖建设(Spark构建实验室数据仓库)。实际应用中,该系统显著提升了设备调度效率(响应时间从46分钟降至9秒)、设备利用率(从41%提升至89%),并大幅减少实验准备时间和维护成本。
654 0
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1765 1
Spring boot 使用mybatis generator 自动生成代码插件
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
934 2
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
1220 0