Springboot+MybatisPlus+Oracle实现主键自增的示例代码

网友投稿 1474 2023-03-11

Springboot+MybatisPlus+Oracle实现主键自增的示例代码

Springboot+MybatisPlus+Oracle实现主键自增的示例代码

上周周一,本来刚过完周末,高高兴兴,老大突然安排了个活,要在一天内把项目的mysql数据库换成Oracle数据库,我们都知道这是不可能完成的任务,但是,秉承着“没有困难的工作,只有不努力的打工人”的精神,我们马上投入了工作,第一步当然是先配置数据库、oracle建表,这个解决调试了一上午,然后下午卡到oracle主键了,所有人网上找方法,一直到第二天凌晨3点半都还没解决,网上方法很多,试了好多都不管用,终于第二天才找到了满足的YRCQBjN方法。

废话不多说,下面贴出。

application.yml配置

# Mybatis的相关配置

mybatis-plus:

mapper-locations: classpath*:com/XX/XX/XX/dao/mapping/*.xml

typeAliasesPackage: com.XX.XX.XX.model

global-config:

#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";

id-type: 1

#序列接口实现类配置

key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator

model实体类配置(仅展示id)

import java.io.Serializable;

import javax.persistence.*;

import lombok.Data;

@Data

@Table(name = "POJO")

public class SysLogeInfo implements Serializable {

@Id

@Column(name = "ID")

@SequenceGenerator(name = "sequenceGenerator",sequenceName = "POJO_SEQ")

@GeneratedValue(generator = "sequenceGenerator",strategy = GenerationType.SEQUENCE)

private Integer id;

}

其中:

@SequenceGenerator的nYRCQBjName与@GeneratedValue的generator相对应

sequenceName即你在oracle数据库中为此表创建的自增序列名(貌似框架无法自动生成,需要自己手动创建)

这样,主键ID插入null值的问题基本解决了,但是我们的Mapper继承了tk.mybatis.mapper.common.Mapper,插入是直接调tk.Mapper的insertSelective(T var1)方法,有时候我们需要插入后的主键id,这种方法没办法得到,所以只能手写insert方法,如下。

SELECT POJO_SEQ.nextval id FROM DUAL

INSERT INTO POJO

( ID,COL1,COL2,COL3,COL4,COL5,COL6)

VALUES

(#{id,jdbcType=INTEGER},

#{col1,jdbcType=INTEGER},

#{col2,jdbcType=VARCHAR},

#{col3,jdbcType=INTEGER},

#{col4,jdbcType=INTEGER},

#{col5,jdbcType=DATE},

#{col6,jdbcType=INTEGER})

注:标签中加入order='BEFORE'即可在插入完成后返回主键。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Eclipse新建web项目流程图解
下一篇:MyBatis常见报错问题及解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~