通用枚举类
对于表中拥有固定几个值的一些字段,可以使用枚举类将比较简单的数字或字符存入到数据库表中,然后将这个简单的数字或字符对应着其具体的字符串表示,比如性别0代表女1代表男。这样就会减轻数据库的存储压力,提高用户的使用体验。
使用MP的通用枚举必须先创建一个枚举类,向外提供属性的getter方法和全参构造器,并使用@EnumValue注解将标识的属性值在数据库中存储
@Getter @AllArgsConstructor public enum SexEnum { FEMALE(0, "女"), MALE(1, "男"); // 将注解标识的属性值存储到数据库中 @EnumValue private Integer sex; private String sexName; }
然后实体类中修改字段对应属性的类型为枚举类型,然后重写toString方法,方便查询结果显示为数据表中数字或字符对应的具体的字符串表示
// 修改字段对应属性的类型为枚举类型 private SexEnum sex; // 重写toString方法 @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", sex=" + sex.getSexName() + ", age=" + age + ", email='" + email + '\'' + ", isDeleted=" + isDeleted + '}'; }
最后在配置文件中设置通用枚举的包,也就是相当于让你写的枚举类生效
mybatis-plus: # 设置通用枚举的包 type-enums-package: com.xiaochen.enums
测试
@Test public void enumTest() { User user = new User(); user.setName("张三"); user.setAge(23); user.setSex(SexEnum.FEMALE); mapper.insert(user); User user1 = mapper.selectById(6); System.out.println(user1); }
测试结果
多数据源
多数据源就是在一个程序中同时配置多个数据库作为数据源进行操作,适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等。目前我们就来模拟一个纯粹多库的一个场景,配置两个数据库的两张表,通过一个测试用例分别获取两张表的数据,如果获取到说明多库模拟成功
第一步: 导入依赖
<!--mybatis-的场景启动器--> <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未匹配到指定数据源时抛异常,false匹配不到指定数据源时使用默认数据源 strict: false datasource: # 主数据源 master: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis_plus username: root password: 123456 # 从数据源 slave_1: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test username: root password: 123456
第三步: 照常使用方法测试在两个数据库查询两张表,唯一不同的就是在service的实现类上使用@DS注解,标注service实现类的所有方法都是对指定数据源进行操作的
测试类及结果