Springboot+MybatisPlus+Oracle實現主鍵自增的示例代碼
上周周一,本來剛過完周末,高高興興,老大突然安排了個活,要在一天內把項目的MySQL數據庫換成Oracle數據庫,我們都知道這是不可能完成的任務,但是,秉承著“沒有困難的工作,只有不努力的打工人”的精神,我們馬上投入了工作,第一步當然是先配置數據庫、oracle建表,這個解決調試了一上午,然后下午卡到oracle主鍵了,所有人網上找方法,一直到第二天凌晨3點半都還沒解決,網上方法很多,試了好多都不管用,終于第二天才找到了滿足的方法。
廢話不多說,下面貼出。
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的name與@GeneratedValue的generator相對應
sequenceName即你在oracle數據庫中為此表創建的自增序列名(貌似框架無法自動生成,需要自己手動創建)
這樣,主鍵ID插入null值的問題基本解決了,但是我們的Mapper繼承了tk.mybatis.mapper.common.Mapper,插入是直接調tk.Mapper的insertSelective(T var1)方法,有時候我們需要插入后的主鍵id,這種方法沒辦法得到,所以只能手寫insert方法,如下。
<insert keyColumn='ID' keyProperty='id' parameterType='com.XX.XX.XX.model.POJO' useGeneratedKeys='true'> <selectKey resultType='int' order='BEFORE' keyProperty='id'> SELECT POJO_SEQ.nextval id FROM DUAL </selectKey> 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})</insert>
注:<selectKey>標簽中加入order=’BEFORE’即可在插入完成后返回主鍵。
到此這篇關于Springboot+MybatisPlus+Oracle實現主鍵自增的文章就介紹到這了,更多相關Springboot+MybatisPlus+Oracle實現主鍵自增內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
