MybatisPlus(SpringBoot版)的通用枚举和代码生成器、多数据源配置

目录

续前面

一、通用枚举

二、代码生成器

三、多数据源配置


一、通用枚举

定义枚举类:

java 复制代码
package com.qcby.SpringBoot.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;

@Getter
public enum SexEnum {
    MALE(1, "男"),
    FEMALE(2, "女");

    @EnumValue    
    private Integer sex;
    private String sexName;

    SexEnum(Integer sex, String sexName) {
        this.sex = sex;
        this.sexName = sexName;
    }
}

在配置文件中配置属性:

java 复制代码
mybatis-plus:
  # 配置MyBatis日志  configuration:
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  
  # 配置扫描通用枚举
  type-enums-package: com.qcby.SpringBoot.enums

测试:

java 复制代码
@Test
public void testSexEnum(){
    User user = new User();
    user.setName("Enum");
    user.setAge(20);
    //设置性别信息为枚举项,会将@EnumValue注解所标识的属性值存储到数据库
    user.setSex(SexEnum.MALE);
    //INSERT INTO t_user ( username, age, sex ) VALUES ( ?, ?, ? ) //Parameters: Enum(String), 20(Integer), 1(Integer)
    userMapper.insert(user);
}

二、代码生成器

导入依赖:

java 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

生成Main方法:

java 复制代码
package com.qcby.SpringBoot.util;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * mybatisplus代码生成器 
 */
 public class FastAutoGeneratorTest {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/mybatis_plus?characterEncoding=utf-8&userSSL=false",
                        "root",
                        "root")
                //全局配置                
                .globalConfig(builder -> {
                    builder.author("qcby") // 设置作者                            
                    //.enableSwagger() // 开启 swagger 模式                            
                    .fileOverride() // 覆盖已生成文件                            
                    .outputDir("D://mybatis_plus"); // 指定输出目录                
                })
                //设置包的                
                .packageConfig(builder -> {
                    builder.parent("com.qcby") // 设置父包名                            
                    .moduleName("mybatisplus") // 设置父包模块名                            
                    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://mybatis_plus"));
                    // 设置mapperXml生成路径                
                 })
                //策略的配置                
                .strategyConfig(builder -> {
                    builder.addInclude("t_user") // 设置需要生成的表名                            
                    .addTablePrefix("t_", "c_"); // 设置过滤表前缀 可以设置多个值                
                 })
                .templateEngine(new FreemarkerTemplateEngine())
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板                
                //.execute()执行的意思                
                .execute();
    }
}

生成结果:

三、多数据源配置

适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等。

需要导入依赖:

XML 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.0</version>
</dependency>

在application.yaml中配置配置多数据源:

XML 复制代码
spring:
    dynamic:
      # 设置默认的数据源或者数据源组 ,默认值即为master      
      primary: master
      # 严格匹配数据源 ,默认false.true未匹配到指定数据源时抛异常 ,false使用默认数据源      
      strict: false      
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false
          driver-class-name: com.mysql.jdbc.Driver
          username: root
          password: root
        slave_1:
          url: jdbc:mysql://localhost:3306/mybatis_plus_1?characterEncoding=utf-8&useSSL=false
          driver-class-name: com.mysql.jdbc.Driver
          username: root
          password: root

在serviceImpl层加上注解,来表示本serviceImpl用哪个数据库

java 复制代码
package com.qcby.SpringBoot.service.Impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qcby.SpringBoot.mapper.ProductMapper;
import com.qcby.SpringBoot.pojo.Product;
import com.qcby.SpringBoot.service.ProductService;
import org.springframework.stereotype.Service;

@DS("slave_1")
@Servicepublic class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
}
java 复制代码
package com.qcby.SpringBoot.service.Impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qcby.SpringBoot.mapper.UserMapper;
import com.qcby.SpringBoot.pojo.User;
import com.qcby.SpringBoot.service.UserService;
import org.springframework.stereotype.Service;

/**
 * ServiceImpl实现了IService,提供了IService中基础功能的实现 
 * 若ServiceImpl无法满足业务需求,则可以使用自定的UserService定义方法,并在实现类中实现 
 */
 @Service
 @DS("master") //指定所操作的数据源
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
相关推荐
元亓亓亓1 小时前
Leet热题100--208. 实现 Trie (前缀树)--中等
java·开发语言
拿破轮1 小时前
不小心在idea中点了add 到版本控制 怎么样恢复?
java·ide·intellij-idea
L.EscaRC4 小时前
Spring Security的解析与应用
spring boot·spring
cynicme6 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
天若有情6737 小时前
【java EE】IDEA 中创建或迁移 Spring 或 Java EE 项目的核心步骤和注意事项
后端·spring·java-ee·intellij-idea
青云交7 小时前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu8 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
Lei活在当下8 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
不穿格子的程序员9 小时前
从零开始刷算法-栈-括号匹配
java·开发语言·
lkbhua莱克瓦249 小时前
Java练习-正则表达式 1
java·笔记·正则表达式·github