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 {
}
相关推荐
苏生Susheng35 分钟前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
想要成为老金高手36 分钟前
Kubernetes 调度器详解:从 nodeName 到污点容忍
java·容器·kubernetes
吴长建先生重名了39 分钟前
ElasticSearch 检索系统性能优化实战:基准测试
java
西索斯coding1 小时前
doubao-seed-2.1-turbo 调用一直 401 怎么办?pro 版同样的 Key 却正常——5 分钟排查定位指南
java·服务器·数据库·ai
旧梦95271 小时前
Java SortedMap 接口详解:从入门到实战
java·开发语言
莫陌尛.1 小时前
Java_this构造方法
java·开发语言
2601_962297251 小时前
C# vs Java vs Python:YOLO工业部署性能对比实战
java·python·c·工业视觉·性能对比
计算机毕设定制辅导-无忧学长1 小时前
《基于SpringBoot的马术俱乐部管理系统》
java·spring boot·后端
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 JDBC 事务管理 阅读笔记 33
spring boot·笔记·后端
Dreams°1231 小时前
【Java后端+Vue前后端分离:内网正常、公网访问异常|5个高频经典踩坑完整复盘】
java·开发语言·vue.js