MyBatis-Plus 使用 Oracle 序列生成主键详解
在 MyBatis-Plus 中使用 Oracle 序列生成主键,可以通过注解的方式来实现。以下是具体的步骤:
- 在实体类中,使用
@TableId注解来标记主键字段,并指定type为IdType.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
}
- 在 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
}
- 在配置文件中,配置 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 序列生成主键,并将生成的主键赋值给实体类的对应字段。
原文地址: http://www.cveoy.top/t/topic/fp17 著作权归作者所有。请勿转载和采集!