天天看點

mybatis批量update資料時報錯的解決辦法

先看代碼:

<update id = "updateList"  parameterType="java.util.ArrayList">  
            <foreach collection="list"  item="item"  index="index"  open="" close=""  separator=";">
            update      
            test_table  
    	       set  
    	            `age` = #{item.age}     
    	        where  `name` =  #{item.name}   
       		</foreach>
    	</update>
           

代碼沒有任何問題,傳入一個list,什麼參數都封裝的很好,但就是一直報錯,這就很惱火,最後查了一下發現,Mybatis映射檔案中的sql語句不允許 “;” 符号。這就找到問題的根源了,

處理辦法:

在連接配接資料庫的url後邊加上 &allowMultiQueries=true 這就OK了,

mybatis批量update資料時報錯的解決辦法

再附帶一個批量插入和删除的配置;

<insert id = "insertList"  parameterType="java.util.ArrayList"> 
	        INSERT INTO test_table   ( `name`,`age`)   
	         VALUES  
	        <foreach collection="list" item="item" index="index" separator=",">
	            (
	              #{item.name},#{item.age}  
	            )
	        </foreach> 
	</insert>

<delete id="deleteData">
  delete from    test_table     where id in 
  <foreach collection="list" index="index" item="item" separator="," open="("   close=")"  >
    #{item.id}   
  </foreach> 
</delete>