【mybatis】mybatis中insert操作,返回自增id


需求是這樣的:

  mybatis中insert操作,返回自增id,因為這個自增id需要給后續業務用到。

  

原本是這樣的:

  將insert語句傳入,正常執行insert操作,返回int永遠是 0[失敗] 或者 1[成功]

mapper.xml是這樣的:

    <insert id="insertMaster" parameterType="java.lang.String" >
        ${masterInsertSql}
    </insert>

 

mapper.java是這樣的:

int insertMaster(@Param("masterInsertSql") String masterInsertSql);

 

 

想要實現mybatis的insert操作返回自增id,需要這樣:

 

1.首先,你需要一個Bean

  這個Bean對象作為參數傳入,這個bean需要一個字段接收自增id

  所以,我得創建一個對象:

public class WorksheetMasterSQLBean {

    private Long id;

    private String masterInsertSql;

  這個對象就多了一個id,用來接收自增id。

  把原本的參數,放在這個對象中。

 

2.我需要將這個對象作為入參傳遞給mybatis

  所以,我的mapper.java這樣寫:

int insertMaster(WorksheetMasterSQLBean masterBean);

 

3.最后,我需要指定我傳入的對象,哪個字段用來接收insert之后返回的自增id

  所以,我的mapper.xml需要這樣寫:

   <insert id="insertMaster" parameterType="com.lqjava.daywork.api.beans.WorksheetMasterSQLBean" useGeneratedKeys="true" keyProperty="id">
        ${masterInsertSql}
    </insert>

添加屬性:

useGeneratedKeys="true" 
keyProperty="id"  //指定bean中的id字段接收 自增主鍵

 

就可以拿到insert操作后的自增主鍵了

 

4.最終要的,在java中調用時候,怎么拿到自增主鍵?

錯誤拿取:

int i = tableDataMapper.insertMaster(masterSQL);
System.out.println("主鍵:"+i);  //返回的依舊是 0 或者 1 ,代表執行成功或失敗

 

正確拿取:

tableDataMapper.insertMaster(masterSQL);
System.out.println("主鍵:"+masterSQL.getId()); //因為上面說了,mybatis會把自增id封裝在你的入參bean的指定字段中,所以應該從 入參.get(指定字段) 去獲取

 


免責聲明!

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



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