在 MyBatis-Plus 中使用 Oracle 序列生成主键,可以通过注解的方式来实现。以下是具体的步骤:

  1. 在实体类中,使用 @TableId 注解来标记主键字段,并指定 typeIdType.INPUT。这样可以告诉 MyBatis-Plus 不自动生成主键,而是使用手动输入的方式。
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName('your_table_name')
public class YourEntity {

    @TableId(value = 'id', type = IdType.INPUT)
    private Long id;

    // other fields and getters/setters
}
  1. 在 Mapper 接口中,使用 @SelectKey 注解来指定使用 Oracle 序列的方式生成主键。在 @SelectKey 注解中,需要指定 statement 属性为 SELECT your_sequence_name.NEXTVAL FROM DUAL,并将生成的主键赋值给目标字段。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.SelectKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;

@Mapper
public interface YourMapper extends BaseMapper<YourEntity> {

    @Options(useGeneratedKeys = true, keyProperty = 'id')
    @SelectKey(statement = 'SELECT your_sequence_name.NEXTVAL FROM DUAL', keyColumn = 'id', before = true, resultType = Long.class)
    @Override
    int insert(YourEntity entity);

    // other methods
}
  1. 在配置文件中,配置 Oracle 的序列生成器。
<!-- MyBatis-Plus 全局配置 -->
<bean id='globalConfig' class='com.baomidou.mybatisplus.core.config.GlobalConfig'>
    <property name='dbConfig'>
        <bean class='com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig'>
            <property name='keyGenerator'>
                <bean class='com.baomidou.mybatisplus.extension.incrementer.OracleKeyGenerator'>
                    <property name='keyProperty' value='id' />
                </bean>
            </property>
        </bean>
    </property>
</bean>

注意:上述配置中的 your_sequence_name 需要替换为你实际使用的 Oracle 序列名称。

这样,当使用 MyBatis-Plus 的 insert 方法插入数据时,会自动调用 Oracle 序列生成主键,并将生成的主键赋值给实体类的对应字段。

MyBatis-Plus 使用 Oracle 序列生成主键详解

原文地址: http://www.cveoy.top/t/topic/fp17 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录