使用mybatis-plus实现Oracle主键自增

使用mybatis-plus实现Oracle主键自增

这里使用 Mybatis-Plus 框架的自增序列实现oracle主键自增

当然如果 Oracle版本≥12c 的可使用数据库新特性实现主键自增, 我这里的oracle数据库使用版本为11g没办法使用新特性

第一步: 引入依赖
<properties>
	<mybatis.plus.version>3.3.1</mybatis.plus.version>
</properties>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis.plus.version}</version>
</dependency>
第二步: 添加配置类文件
@Configuration
public class MybatisPlusConfig {

    /**
     * PageHalper 分页插件
     * @return
     */
    @Bean
    public PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        //允许在运行时根据多数据源自动识别对应方言的分页
        properties.setProperty("autoRuntimeDialect", "TRUE");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }

    /**
     * oracle 主键生成器
     */
    @Bean
    public IKeyGenerator oracleKeyGenerator() {
        return new OracleKeyGenerator();
    }
 }
第三步: 实体类添加
@Date
@KeySequence(value = "SEQ_USER_INFO", clazz = Long.class)//clazz = Long.class 跟主键类型保持一致
public class UserInfo {

    @TableId(value = "USER_ID", type = IdType.INPUT)
    @ApiModelProperty(value = "用户ID")
    private Long userId;
    
    @TableFiled("USER_NAME")
    @ApiModelProperty(value = "账号")
    private String userName;
    
    @TableFiled("NICK_NAME")
    @ApiModelProperty(value = "昵称")
    private String nickName;
    
    @TableFiled("PASSWORD")
    @ApiModelProperty(value = "密码")
    private String password;
    
    @TableField("DEPT_ID")
    @ApiModelProperty(value = "部门编号")
    private String deptId;
    
    @TableField("ROLE_ID")
    @ApiModelProperty(value = "角色编号")
    private Integer roleId;
    
    @TableFiled("CREATE_TIME")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    
    @TableFiled("UPDATE_TIME")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

}
第四步: 给对象创建序列

(自增序列 -> 初始值需根据数据库 当前表中最大id+1 设置, 序列名最好统一为: SEQ_+表名)
举例: 列如当前 USER_INFO 表中主键的最大id为 50, 那么 start with 51

create sequence SEQ_USER_INFO
 increment by 1     --每次+1  
 start with 1       --1开始
 nomaxvalue         --不限最大值
 nominvalue         --不限最小值
 cache 20;          --设置取值缓存数为20(并发小的服务可不设置该参数)

做完以上操作即可对数据库插入数据检验自增序列是否生效!
本人已亲自测试有效!
若存在错误欢迎指出! 感谢观看!!!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值