mybatis oracle 设置id自增

create sequence SEQ_WC_MESSAGE_LOG
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 100;

主要就是

@KeySequence(value = "{序列名}", clazz = Long.class)

@TableId(value = "ID", type = IdType.INPUT)

配置文件:
mybatis-plus.global-config.id-type=1
mybatis-plus.global-config.key-generator=com.baomidou.mybatisplus.incrementer.OracleKeyGenerator

网上都用配置文件(如上),可我试的时候发现配置文件没生效,就改用bean的方式注入到容器。

   @Bean(name = "sqlSessionFactoryTest")
    @Primary
    @DependsOn("globalConfig")
    public MybatisSqlSessionFactoryBean sqlSessionFactoryTest(DruidDataSource dataSource) throws IOException {
        MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
        bean.setDataSource(dataSource);
 		bean.setGlobalConfig(globalConfig());
        return bean;
    }
    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig conf = new GlobalConfig();
        DbConfig dbConfig = new GlobalConfig.DbConfig();
        dbConfig.setKeyGenerator(new OracleKeyGenerator());
        dbConfig.setIdType(IdType.values()[1]);
        conf.setDbConfig(dbConfig);
        
        return conf;
    }

1.选中OracleKeyGenerator.executeSql方法按Ctrl+alt+H找到方法调用的位置
这边设置了序列的名字从@KeySequence(value="SEQ_WC_MESSAGE_LOG",clazz=Long.class) 
中获取了“SEQ_WC_MESSAGE_LOG”

2.这边开始为id赋值,可是这边因为设置为INPUT ,导致getIdType.getKey小于3,所以跳出填充主键,并且metaObjectHandler等于null,这里啥也没处理return metaObject.getOriginalObject();这边没看懂

3.最后结果是插入成功了

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值