SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例

文章目录

        • 配置说明:
        • 工程结构图
        • 1、maven 依赖:
        • 2、yml 配置文件:
        • 3、核心代码:
          • User.java
          • MybatisPlusConfig.java
          • UserController.java
          • UserService.java
          • UserServiceImpl.java
          • UserMapper.java
        • 4、测试
          • 1)查询
          • 2)添加
          • 3)移除
          • 4)修改
        • 总结:

配置说明:

maven3.5.3
SpringBoot 2.1.2.RELEASE
Hikari DataSource
mybatis-plus 3.0.7.1

工程结构图

开始之前先放张项目结构图

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第1张图片

1、maven 依赖:

     
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.0.7.1
        

        
            mysql
            mysql-connector-java
            runtime
        

        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

2、yml 配置文件:

spring:
  application:
    name: mybatis-plus-curd

  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&autoReconnect=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    # hikari 连接池  https://blog.csdn.net/X5fnncxzq4/article/details/80649679
    hikari:
      # 自动提交
      auto-commit: true
      connection-test-query: SELECT 1
      # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
      # 生产环境 connect-time 10 s
      connection-timeout: 9000
      # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟
      idle-timeout: 600000
      # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒,参考MySQL wait_timeout 7200s 参数(# 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->  ) -->
      max-lifetime: 1800000
      # 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)
      maximum-pool-size: 15
      # 最小连接数
      minimum-idle: 10
      # 连接池名字
      pool-name: DemoHikariCP


mybatis-plus:
  # MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名
  type-aliases-package: com.fxbin.mybatisplus.bean.*
  # 该配置请和 typeAliasesPackage 一起使用,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象 。
  type-aliases-super-type: java.lang.Object
  configuration:
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 驼峰下划线转换
    map-underscore-to-camel-case: true
    # 配置的缓存的全局开关
    cache-enabled: true
    # 延时加载的开关
    lazy-loading-enabled: true
    # 开启的话,延时加载一个属性时会加载该对象全部属性,否则按需加载属性
    multiple-result-sets-enabled: true
    use-generated-keys: true
    default-statement-timeout: 60
    default-fetch-size: 100

3、核心代码:

User.java
package com.fxbin.mybatisplus.bean;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * User
 *
 * @author fxbin
 * @version v1.0
 * @since 2019/2/10 1:30
 */
@Data
public class User implements Serializable {

    /**
     * 主键ID, 数据库ID自增
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 创建时间
     */
    private Date gmtCreate;

    /**
     * 修改时间
     */
    private Date gmtModified;

}

MybatisPlusConfig.java
package com.fxbin.mybatisplus.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * MybatisPlusConfig
 *
 * @author fxbin
 * @version v1.0
 * @since 2019/2/10 1:30
 */
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {

    /**
     * 性能分析拦截器,不建议生产使用 用来观察 SQL 执行情况及执行时长, 默认dev,staging 环境开启
     * @author fxbin
     * @return com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
     */
    @Bean
    @Profile({"dev", "staging"})
    public PerformanceInterceptor performanceInterceptor(){

        //启用性能分析插件, SQL是否格式化 默认false,此处开启
        return new PerformanceInterceptor().setFormat(true);
    }


    /**
     * 分页插件
     * @author fxbin
     * @return com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

}

UserController.java
package com.fxbin.mybatisplus.controller;

import com.fxbin.mybatisplus.bean.User;
import com.fxbin.mybatisplus.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * UserController
 *
 * @author fxbin
 * @version v1.0
 * @since 2019/2/10 1:30
 */
@RestController
public class UserController {

    @Resource
    private UserService userService;

    /**
     * 查询全部
     * @param page
     * @param size
     * @return
     */
    @RequestMapping("/listAll")
    public Object listAll(@RequestParam(value = "page",defaultValue = "1")int page,
                          @RequestParam(value = "size",defaultValue = "10")int size){
        return userService.listAll(page, size);
    }

    /**
     * 添加数据
     * @param user
     * @return
     */
    @RequestMapping("/insert")
    public int insert (User user){
        return userService.insert(user);
    }

    /**
     * 删除
     * @param userId
     * @return
     */
    @RequestMapping("/remove")
    public int remove(Integer userId){
        return userService.remove(userId);
    }

    /**
     * 修改
     * @param user
     * @return
     */
    @RequestMapping("/update")
    public int update(User user){
        return userService.update(user);
    }

}

UserService.java
package com.fxbin.mybatisplus.service;

import com.fxbin.mybatisplus.bean.User;

/**
 * UserService
 *
 * @author fxbin
 * @version v1.0
 * @since 2019/2/10 1:31
 */
public interface UserService {

    Object listAll(int page, int size);

    int insert(User user);

    int remove(Integer userId);

    int update(User user);
}
UserServiceImpl.java
package com.fxbin.mybatisplus.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fxbin.mybatisplus.bean.User;
import com.fxbin.mybatisplus.mapper.UserMapper;
import com.fxbin.mybatisplus.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * UserServiceImpl
 *
 * @author fxbin
 * @version v1.0
 * @since 2019/2/10 1:31
 */
@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    @Override
    public Object listAll(int page, int size) {

        Page pageObj = new Page(page, size);
        return userMapper.selectPage(pageObj, null);
    }

    @Override
    public int insert(User user) {
        return userMapper.insert(user);
    }

    @Override
    public int remove(Integer userId) {
        return userMapper.deleteById(userId);
    }

    @Override
    public int update(User user) {
        return userMapper.updateById(user);
    }
}

UserMapper.java
package com.fxbin.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fxbin.mybatisplus.bean.User;
import org.apache.ibatis.annotations.Mapper;

/**
 * UserMapper
 *
 * @author fxbin
 * @version v1.0
 * @since 2019/2/10 1:31
 */
@Mapper
public interface UserMapper extends BaseMapper {
}

4、测试

1)查询

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第2张图片

2)添加

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第3张图片

查看数据库记录,进一步验证,确实已经新增了一条记录

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第4张图片

3)移除

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第5张图片

查看数据库,id 为10 的记录已经成功移除

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第6张图片

4)修改

我们修改之前新增的id为14 的记录,username 修改为 “哈哈哈哈”,password 修改为 “呵呵呵呵”
SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第7张图片

查看数据库修改记录,已成功

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第8张图片

总结:

一个报错:
SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第9张图片
查看源码之后:修改注解自增类型为AUTO (数据库自增)

SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第10张图片
SpringBoot2.X (二十六):SpringBoot整合 MybatisPlus + MySQL CURD 示例_第11张图片
https://gitee.com/baomidou/mybatis-plus/blob/3.0/mybatis-plus-annotation/src/main/java/com/baomidou/mybatisplus/annotation/IdType.java
以上就是有关 SpringBoot2.X 整合 Mysql + MybatisPlus 的 CURD 的简单案例,这里我没有对返回结果进行封装,各位可根据自行需要,进行返回结果的封装…

示例代码:https://gitee.com/fxbin/SpringBoot2Example

— end —

如有问题,请及时联系,谢谢

你可能感兴趣的:(SpringBoot,SpringBoot2.X,学习之路)