1. 程式人生 > >Mybatis批量執行語句

Mybatis批量執行語句

有這樣一個需求,service傳一個List<Dept>給資料訪問層,需要執行批量修改操作。

所以在配置檔案中,會有如下的寫法來配置修改的sql語句

<update id="DeptUpdateList">
	<foreach collection="list" item="item" separator=";">
		update dept set dept_name=#{item.deptName},dept_address=#{item.deptAddr} where dept_id=#{item.deptId}
	</foreach>
</update>

sql連線起來後是update dept set... where dept_id=...;update dept set... where dept_id=...;update dept set... where dept_id=...;....

但是執行的時候會報錯。

是因為這樣會一次執行多條sql。預設情況下是不允許這樣做的

需要我們在mybatis的主配置檔案中,為資料來源中的url屬性值追加&amp;allowMultiQueries=true

<environments default="default">
	<environment id="default">
		<transactionManager type="JDBC"></transactionManager>
		<dataSource type="POOLED">
			<property name="driver" value="com.mysql.jdbc.Driver"/>
			<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&amp;allowMultiQueries=true"/>
			<property name="username" value="root"/>
			<property name="password" value="root"/>
		</dataSource>
	</environment>
</environments>