Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的示例代碼
上周周一,本來剛過完周末,高高興興,老大突然安排了個(gè)活,要在一天內(nèi)把項(xiàng)目的MySQL數(shù)據(jù)庫換成Oracle數(shù)據(jù)庫,我們都知道這是不可能完成的任務(wù),但是,秉承著“沒有困難的工作,只有不努力的打工人”的精神,我們馬上投入了工作,第一步當(dāng)然是先配置數(shù)據(jù)庫、oracle建表,這個(gè)解決調(diào)試了一上午,然后下午卡到oracle主鍵了,所有人網(wǎng)上找方法,一直到第二天凌晨3點(diǎn)半都還沒解決,網(wǎng)上方法很多,試了好多都不管用,終于第二天才找到了滿足的方法。
廢話不多說,下面貼出。
application.yml配置
# Mybatis的相關(guān)配置mybatis-plus: mapper-locations: classpath*:com/XX/XX/XX/dao/mapping/*.xml typeAliasesPackage: com.XX.XX.XX.model global-config: #主鍵類型 0:'數(shù)據(jù)庫ID自增', 1:'用戶輸入ID',2:'全局唯一ID (數(shù)字類型唯一ID)', 3:'全局唯一ID UUID'; id-type: 1 #序列接口實(shí)現(xiàn)類配置 key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
model實(shí)體類配置(僅展示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相對(duì)應(yīng)
sequenceName即你在oracle數(shù)據(jù)庫中為此表創(chuàng)建的自增序列名(貌似框架無法自動(dòng)生成,需要自己手動(dòng)創(chuàng)建)
這樣,主鍵ID插入null值的問題基本解決了,但是我們的Mapper繼承了tk.mybatis.mapper.common.Mapper,插入是直接調(diào)tk.Mapper的insertSelective(T var1)方法,有時(shí)候我們需要插入后的主鍵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>標(biāo)簽中加入order=’BEFORE’即可在插入完成后返回主鍵。
到此這篇關(guān)于Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的文章就介紹到這了,更多相關(guān)Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera2. html小技巧之td,div標(biāo)簽里內(nèi)容不換行3. html清除浮動(dòng)的6種方法示例4. 使用css實(shí)現(xiàn)全兼容tooltip提示框5. HTML DOM setInterval和clearInterval方法案例詳解6. CSS3中Transition屬性詳解以及示例分享7. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享8. 小技巧處理div內(nèi)容溢出9. HTML <!DOCTYPE> 標(biāo)簽10. 利用CSS制作3D動(dòng)畫
