1. 依赖添加
implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.3.1'
implementation 'com.baomidou:mybatis-plus-boot-starter-test:3.5.3.1'
implementation 'com.mysql:mysql-connector-j'
implementation 'com.alibaba:druid-spring-boot-3-starter:1.2.18'
// 只是在代码生成测试阶段用
testImplementation 'com.baomidou:mybatis-plus-generator:3.5.3.1'
implementation 'org.apache.velocity:velocity-engine-core:2.3'
2. 配置
新建application.yml配置如下:
spring:
jackson:
# JSON 序列化不返回值为NULL的字段
default-property-inclusion: NON_EMPTY
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# druid 连接池管理
druid:
filter:
config:
# 开启密钥加密
enabled: true
stat:
enabled: true
# 配置默认的监控统计拦截的Filter
# 不配置则监控页面中的SQL无法统计
# stat - SQL监控配置
# wall - SQL防火墙配置
# slf4j - Druid日志配置
filters: stat,wall,slf4j
# 初始化连接池大小
initial-size: 20
# 连接池最大连接数
max-active: 500
# 每个连接上PSCache的最大值
# 如果大于0,pool-prepared-statements自动开启
max-pool-prepared-statement-per-connection-size: -1
# 连接时最大等待时间(单位:毫秒)
max-wait: 60000
# 保持空闲连接不被关闭的最小生存时间(单位:毫秒)
min-evictable-idle-time-millis: 25200000
# 连接池最小空闲数
min-idle: 0
# 是否开启PSCache,即是否缓存preparedStatement(提升写入、查询效率)
# 建议在支持游标的数据库开启,例如:Oracle
pool-prepared-statements: false
# 检测获取连接时的有效性
# 开启后会影响性能
test-on-borrow: false
# 检测归还连接时的有效性
# 开启后会影响性能
test-on-return: false
# 检测空闲连接
# 不影响性能,建议开启
test-while-idle: true
# 检测关闭空闲连接的时间间隔(单位:毫秒)
time-between-eviction-runs-millis: 60000
# 检测连接有效的SQL
# 为空则test-while-idle、test-on-borrow、test-on-return配置失效
validation-query: SELECT 1
# 检测连接是否有效的超时时间
validation-query-timeout: 1
stat-view-servlet:
# 访问白名单
allow: 127.0.0.1
# 配置统计页面
enabled: true
# 访问密码
login-password: suanfaxiaosheng
# 访问用户名
login-username: root
# 允许重置监控数据
reset-enable: true
web-stat-filter:
# 配置统计页面过滤
enabled: true
# 排除路径
exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
# 开启session统计
session-stat-enable: true
# session统计的最大个数
session-stat-max-count: 100
# 过滤路径
url-pattern: /*
db-type: mysql
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
global-config:
db-config:
# 主键类型:自增
id-type: auto
# mapper xml文件路径
mapper-locations: classpath:mapper/*.xml
在application-dev.yml配置错误打印SQL日志
spring:
datasource:
druid:
url: jdbc:mysql://127.0.0.1:3306/cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: cloud
password: 123456
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
3. 新建user.sql脚本
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户ID',
`username` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录账号',
`name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
4. 新建代码生成工具类FastAutoGeneratorTest.java
/**
* 根据数据表生成代码工具
*
* @author shenjian
* @since 2023/8/16
*/
public class FastAutoGeneratorTest {
public static void main(String[] args) {
DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:3306/cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai","cloud","123456");
FastAutoGenerator.create(dataSourceConfig)
// 全局配置
.globalConfig((scanner, builder) -> builder.enableSwagger().author(scanner.apply("请输入作者名称?")))
// 包配置
.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?")))
// 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
.controllerBuilder().enableRestStyle().enableHyphenStyle()
.entityBuilder().enableLombok().enableTableFieldAnnotation().idType(IdType.INPUT).formatFileName("%sModel").build())
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
运行main方法根据提示创建包即可, 生成代码后我们在根据需要修改即可
5. 新建自动注入然后正常启动项目即可
resources目录下新建META-INF.spring目录,然后新建文件
org.springframework.boot.autoconfigure.AutoConfiguration.imports内容如下
com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
至此,可以正常启动项目,集成MybatisPlus完毕,对于使用语法,可以去官网查询,后续我们将介绍特殊的一些用法
欢迎关注公众号算法小生