MyBatis+Oracle實現主鍵自增長的幾種常用方式


一、使用selectKey標簽

 

<insert id="addLoginLog" parameterType="map" >
          <selectKey  keyProperty="id" resultType="int" order="BEFORE">
              select nvl(max(id),0)+1 from ap_loginlog
          </selectKey>
          insert into ap_loginlog(ID,MEMBER_ID) values(#{id},#{memberId})
  </insert>

 

keyProperty是指vo類中的主鍵屬性名稱,resultType是指vo類中的主鍵屬性類型,order有兩個屬性,一個是AFTER是指限制性插入語句,一個是BEFORE是指先執行selectKey標簽內的語句:select nvl(max(主鍵名),0)+1 from 表名
二、使用序列

首先創建序列

CREATE SEQUENCE loginlog_squence   
INCREMENT BY 1  
NOMAXVALUE  
NOCYCLE  
CACHE 10;  

然后再sql語句中插入

<insert id="addLoginLog" parameterType="map" >
      insert into ap_loginlog(ID,MEMBER_ID) values(loginlog_squence.nextval,#{memberId})
</insert>

三、使用序列加觸發器

create or replace trigger loginlog_trigger  
  before insert on ap_loginlog    
  for each row  
begin  
  select loginlog_sequence.nextval into :new.id from dual;  
end loginlog_trigger;  

然后再sql語句中插入

<insert id="addLoginLog" parameterType="map" >
      insert into ap_loginlog(MEMBER_ID) values(#{memberId})
  </insert>

四、自定義一張表,每次從表中獲取主鍵,然后將那個數字+1,這樣就可以保證主鍵的唯一性了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM