selectKey返回查詢的LAST_INSERT_ID的總是1


想寫一個插入后獲取剛插入的數據的id,結果總是1.

<insert id="save" parameterType="dictionary">
        <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
            SELECT LAST_INSERT_ID() as id
        </selectKey>
        insert into tb_cfms_dictionary (
            category,
            `key`,
            `value`,
            parentId
        ) values (
            #{category},
            #{key},
            #{value},
            #{parentId}
        )
    </insert>

其中dictionary是我們實體類路徑

返回1是因為我們查詢成功返回1,查詢失敗自然返回0

再次之前,因為設置id為String類型會一直報錯,因為不能返回String類型。

將實體類中的id改為Integer后,然后返回1.其實真實的id已經返回我們傳入的參數實體類了。

其中keyProperty就是將id返回到實體類中了。所以接下來只要這么寫

dictionary.setParentId("32");
dictionaryDao.save(dictionary);
parentId = String.valueOf(dictionary.getId());

左邊進行斷點,在此之前dictionary實體類是並沒有id的

下一步之后id就會有id值了

問題解決


免責聲明!

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



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