3.基于SpringBoot3集成MybatisPlus

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完毕,对于使用语法,可以去官网查询,后续我们将介绍特殊的一些用法

欢迎关注公众号算法小生

猜你喜欢

转载自blog.csdn.net/SJshenjian/article/details/132504459