MyBatis-Plus速成指南:通用枚举 & 多数据源

通用枚举:

  1. 概述:
    1. 表中有些字段值是固定的,例如性别(男或女),此时我们可以使用 MyBatis-Plus 的通用枚举来实现
  2. 数据库表添加字段:
  3. 创建通用枚举类型:
    @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;
        }
    }
  4. 配置扫描通用枚举:
    # 配置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
  5. 测试:
    //枚举使用:
    @Test
    public void testSexEnum(){
        User user = new User();
        user.setName("张三");
        user.setAge(20);
    
        //设置性别信息为枚举项,会将 @EnumValue 注解所标识的属性值存储到数据库
        user.setSex(SexEnum.MALE);
        userMapper.insert(user);
    }

代码生成器:

  1. 引入依赖:
    <!--代码生成器依赖-->
    <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>
  2. 快速生成:
    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();
        }
    }

多数据源:

  1. 简介:
    1. 适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等
  2. 模拟多库:
    1. 创建两个库,分别为:mybatis_plus(以前的库不动) 与 mybatis_plus_1,将 mybatis_plus 库的 product 表移动到 mybatis_plus-1 库,这样每个库一张表,通过测试用例分别获取用户数据和商品数据,如果获取成功,说明多库模拟成功
  3. 创建数据库及表:
    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));
    2. 添加测试数据
      INSERT INTO product (id, NAME, price) VALUES (1, '外星人笔记本 ', 100);
    3. 删除 mybatis_plus 库中 product 表:
      use mybatis_plus;
      DROP TABLE IF EXISTS product;
  4. 引入依赖:
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>3.5.0</version>
    </dependency>
  5. 配置多数据源:
    1. 说明:把之前的数据库连接注释掉
      #多数据源
      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
  6. 创建用户 service:
    public interface UserService extends IService<User> {
    
    }
    @Service
    @DS("master")   //指定所操作的数据源
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    
    }
  7. 创建商品 service:
    public interface ProductService extends IService<Package> {
    }
    @Service
    @DS("slave_1")
    public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> {
    }
  8. 测试:
    @Autowired
    private UserService userService;
    @Autowired
    private ProductService productService;
    
    @Test
    public void testDynamicDate(){
        System.out.println(userService.getById(1L));
        System.out.println(productService.getById(1L));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值