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 {
}
相关推荐
Q_Q196328847537 分钟前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
该用户已不存在40 分钟前
OpenJDK、Temurin、GraalVM...到底该装哪个?
java·后端
TT哇1 小时前
@[TOC](计算机是如何⼯作的) JavaEE==网站开发
java·redis·java-ee
Tina学编程1 小时前
48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
java·算法
青川入梦1 小时前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
执子手 吹散苍茫茫烟波2 小时前
leetcode415. 字符串相加
java·leetcode·字符串
小韩博2 小时前
网络安全(Java语言)脚本 汇总(二)
java·安全·web安全
萤丰信息2 小时前
技术赋能安全:智慧工地构建城市建设新防线
java·大数据·开发语言·人工智能·智慧城市·智慧工地
带刺的坐椅2 小时前
Java MCP 的鉴权?好简单的啦
java·鉴权·mcp·solon-ai
Pocker_Spades_A2 小时前
飞算JavaAI家庭记账系统:从收支记录到财务分析的全流程管理方案
java·开发语言