目录
续前面
一、通用枚举
二、代码生成器
三、多数据源配置
一、通用枚举
定义枚举类:
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;}
}
在配置文件中配置属性:
mybatis-plus:# 配置MyBatis日志 configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 配置扫描通用枚举type-enums-package: com.qcby.SpringBoot.enums
测试:
@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);
}
二、代码生成器
导入依赖:
<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方法:
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();}
}
生成结果:
三、多数据源配置
适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等。
需要导入依赖:
<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version>
</dependency>
在application.yaml中配置配置多数据源:
spring:dynamic:# 设置默认的数据源或者数据源组 ,默认值即为master primary: master# 严格匹配数据源 ,默认false.true未匹配到指定数据源时抛异常 ,false使用默认数据源 strict: false datasource:master:url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=falsedriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: rootslave_1:url: jdbc:mysql://localhost:3306/mybatis_plus_1?characterEncoding=utf-8&useSSL=falsedriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: root
在serviceImpl层加上注解,来表示本serviceImpl用哪个数据库
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 {
}
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 {
}