Mybatis批量執行語句
阿新 • • 發佈:2019-02-09
有這樣一個需求,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屬性值追加&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&allowMultiQueries=true"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments>