maven3.5.3
SpringBoot 2.1.2.RELEASE
Hikari DataSource
mybatis-plus 3.0.7.1
开始之前先放张项目结构图
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
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
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;
}
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();
}
}
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);
}
}
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);
}
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);
}
}
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 {
}
查看数据库记录,进一步验证,确实已经新增了一条记录
查看数据库,id 为10 的记录已经成功移除
我们修改之前新增的id为14 的记录,username 修改为 “哈哈哈哈”,password 修改为 “呵呵呵呵”
查看数据库修改记录,已成功
一个报错:
查看源码之后:修改注解自增类型为AUTO (数据库自增)
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 —
如有问题,请及时联系,谢谢