MyBatis 返回(批量)新增數據的自增id



<
insert id="save" parameterType="Vote" useGeneratedKeys="true" keyProperty="id"> INSERT INTO vote VALUES(null,#{theme},#{isuse}) <selectKey resultType="int" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() AS id </selectKey> </insert>


接收:

  vm.save(vote);
  int id=vote.getId();

 

批量時,傳入list,獲取時類同單個,mybatis自動把自增的id裝入list中的對象的id,mapper.xml寫法如:

    <insert id="save" parameterType="list" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO t_usergift
        (id,fromid,toid,`itemid`,amount,title,content,state,create_time)
        VALUES
        <foreach collection="list" item="item" index="index"
            separator=",">
            (#{item.id},#{item.fromid},#{item.toid},#{item.itemid},#{item.amount},#{item.title},#{item.content},#{item.state},#{item.createTime})
        </foreach>
        
    </insert>

另:上述方式確實不能返回自增id,而且還報錯(不認識keyProperty中指定的Id屬性),解決如下(網傳,沒試過)

1、升級Mybatis版本到3.3.1以上。

2、在Dao中不能使用@param注解。

3、Mapper.xml中使用list變量接受Dao中的集合。

 


免責聲明!

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



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