【第18章】MyBatis-Plus主键生成策略


前言

在 MyBatis-Plus 中,主键生成策略是一个重要的概念,它决定了如何为数据库表中的记录生成唯一的主键值。以下是关于主键生成策略的详细说明和配置方法。


一、主键生成策略概述

主键生成策略必须使用 INPUT 类型,这意味着主键值需要由用户在插入数据时提供。MyBatis-Plus 支持在父类中定义 @KeySequence 注解,子类可以继承使用。

从版本 3.3.0 开始,MyBatis-Plus 会自动识别主键类型,因此不再需要手动指定主键类型。

MyBatis-Plus 内置支持多种数据库的主键生成策略,包括:

  • DB2KeyGenerator
  • H2KeyGenerator
  • KingbaseKeyGenerator
  • OracleKeyGenerator
  • PostgreKeyGenerator

如果内置的主键生成策略不能满足需求,可以通过实现 IKeyGenerator 接口来扩展自定义的主键生成策略。

二、示例

下面是一个使用 @KeySequence 注解的实体类示例:

@KeySequence(value = "SEQ_ORACLE_STRING_KEY", clazz = String.class)
public class YourEntity {

    @TableId(value = "ID_STR", type = IdType.INPUT)
    private String idStr;

    // 其他字段和方法...
}

在这个示例中,YourEntity 类使用了 @KeySequence 注解来指定 Oracle 数据库中的序列 SEQ_ORACLE_STRING_KEY 来生成主键值,主键类型为 String

三、Spring Boot 配置

1. 方式一:使用配置类

在 Spring Boot 应用中,可以通过配置类来设置主键生成策略:

@Bean
public IKeyGenerator keyGenerator() {
    return new H2KeyGenerator();
}

2. 方式二:通过 MybatisPlusPropertiesCustomizer 自定义

也可以通过 MybatisPlusPropertiesCustomizer 来自定义主键生成策略:

@Bean
public MybatisPlusPropertiesCustomizer plusPropertiesCustomizer() {
    return plusProperties -> plusProperties.getGlobalConfig().getDbConfig().setKeyGenerator(new H2KeyGenerator());
}

四、Spring 配置

1. 方式一: XML 配置

在传统的 Spring 应用中,可以通过 XML 配置来设置主键生成策略:

<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
   <property name="dbConfig" ref="dbConfig"/>
</bean>

<bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
   <property name="keyGenerator" ref="keyGenerator"/>
</bean>

<bean id="keyGenerator" class="com.baomidou.mybatisplus.extension.incrementer.H2KeyGenerator"/>

2. 方式二:注解配置

使用注解配置主键生成策略:

@Bean
public GlobalConfig globalConfig() {
    GlobalConfig conf = new GlobalConfig();
    conf.setDbConfig(new GlobalConfig.DbConfig().setKeyGenerator(new H2KeyGenerator()));
    return conf;
}

总结

回到顶部

以上配置方法可以根据实际项目需求选择合适的方式来设置主键生成策略。

相关推荐

  1. 18MyBatis-Plus生成策略

    2024-07-11 08:10:02       12 阅读
  2. Mybatis获取

    2024-07-11 08:10:02       27 阅读
  3. 20MyBatis-Plus逻辑删除支持

    2024-07-11 08:10:02       5 阅读
  4. 33MyBatis-Plus之预防安全漏洞

    2024-07-11 08:10:02       10 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 08:10:02       7 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 08:10:02       8 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 08:10:02       6 阅读
  4. Python语言-面向对象

    2024-07-11 08:10:02       9 阅读

热门阅读

  1. C++ 判断语句的深入解析

    2024-07-11 08:10:02       9 阅读
  2. spring事务详解

    2024-07-11 08:10:02       10 阅读
  3. 1657. 确定两个字符串是否接近

    2024-07-11 08:10:02       10 阅读
  4. C# 预处理器指令

    2024-07-11 08:10:02       8 阅读
  5. CentOS命令格式及常用命令

    2024-07-11 08:10:02       8 阅读