今天需要把mysql+mybatislPlus的框架转为oracle+mybatislPlus时候,本以为可以直接像mysql一样,直接使用mybatisPlus的BaseMapper,但是却直接报错提示主键id不能为空。上网搜了下资料,得知可以通知配置自增序列的方式解决这个问题。

  1. 在oracle数据库创建序列
CREATE SEQUENCE SEQ_USER//序列名字
INCREMENT BY 1                    //每次自增1, 也可写非0的任何整数,表示自增,或自减
START WITH 1                       //以该值开始自增或自减
MAXVALUE 1.0E20                   //最大值;设置NOMAXVALUE表示无最大值
MINVALUE 1                           //最小值;设置NOMINVALUE表示无最大值
CYCLE or NOCYCLE                  //设置到最大值后是否循环;
CACHE 20                              //指定可以缓存 20 个值在内存里;如果设置不缓存序列,则写NOCACHE
ORDER or NOORDER                  //设置是否按照请求的顺序产生序列
  1. 创建序列注解类
@Configuration
public class SequenceConfig {
    /**
     * Sequence主键自增
     *
     * @return 返回oracle自增类
     * @author zhenggc
     * @date 2019/1/2
     */
    @Bean
    public OracleKeyGenerator oracleKeyGenerator(){
        return new OracleKeyGenerator();
    }
}

  1. 实体类使用序列
@TableName("t_sm_user")
@KeySequence(value = "SEQ_USER", clazz = Integer.class)
public class TSmUser extends MyBaseModel implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "ID", type = IdType.INPUT)
    private Long id;

即可!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐