MyBatis-Plus速成指南:通用枚举 多数据源
通用枚举:
概述:
表中有些字段值是固定的,例如性别(男或女),此时我们可以使用 MyBatis-Plus 的通用枚举来实现 数据库表添加字段: 创建通用枚举类型: @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日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
#配置 MyBatis-Plus 操作表的前缀
table-prefix: t_
#配置 MyBatis-Plus 的主键策略
id-type: auto
#配置扫描通用枚举
type-enums-package: com.springboot.mybatisplus.enums
测试: //枚举使用:
@Test
public void testSexEnum(){
User user = new User();
user.setName("张三");
user.setAge(20);
//设置性别信息为枚举项,会将 @EnumValue 注解所标识的属性值存储到数据库
user.setSex(SexEnum.MALE);
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>
快速生成: public class FastAutoGeneratorTest {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis_plus","root","root")
.globalConfig(builder -> {
//设置作者
builder.author("root")
.enableSwagger() //开启 swagger 模式
.fileOverride() //覆盖已生成文件
.outputDir("D://mybatis_lus"); //指定输出路径
})
.packageConfig(builder -> {
builder.parent("com.springboot") //设置父包名
.moduleName("mybatisplus") //设置父包名
//设置 mapperxml 生成路径
.pathInfo(Collections.singletonMap(OutputFile.mapperXml,"D://mybatis_lus"));
})
.strategyConfig(builder -> {
builder.addInclude("t_user") //设置需要生成的表名
.addTablePrefix("t_","c_"); //设置过滤表前缀
})
//使用Freemarker 引擎模板,默认的是 velocity 引擎模板
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
多数据源:
简介:
适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等 模拟多库:
创建两个库,分别为:mybatis_plus(以前的库不动) 与 mybatis_plus_1,将 mybatis_plus 库的 product 表移动到 mybatis_plus-1 库,这样每个库一张表,通过测试用例分别获取用户数据和商品数据,如果获取成功,说明多库模拟成功 创建数据库及表:
创建数据库 mybatis_plus_1 和表 product CREATE DATABASE `mybatis_plus_1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use `mybatis_plus_1`;
CREATE TABLE product
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '商品名称 ',
price INT(11) DEFAULT 0 COMMENT '价格 ',
version INT(11) DEFAULT 0 COMMENT '乐观锁版本号 ',
PRIMARY KEY (id));
添加测试数据 INSERT INTO product (id, NAME, price) VALUES (1, '外星人笔记本 ', 100);
删除 mybatis_plus 库中 product 表: use mybatis_plus;
DROP TABLE IF EXISTS product;
引入依赖: <dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
配置多数据源:
说明:把之前的数据库连接注释掉 #多数据源
spring:
datasource:
dynamic:
#设置默认的数据库源或者数据源组,默认值即为 master
primary: master
#严格匹配数据源,默认 false, true 为匹配到指定数据源时抛异常
strict: false
datasource:
master:
url: jdbc:mysql://localhost:3306/mybatis_plus
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
slave_1:
url: jdbc:mysql://localhost:3306/mybatis_plus_1
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
创建用户 service: public interface UserService extends IService<User> {
}
@Service
@DS("master") //指定所操作的数据源
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
创建商品 service: public interface ProductService extends IService<Package> {
}
@Service
@DS("slave_1")
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> {
}
测试: @Autowired
private UserService userService;
@Autowired
private ProductService productService;
@Test
public void testDynamicDate(){
System.out.println(userService.getById(1L));
System.out.println(productService.getById(1L));
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2292149.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!