前言:
而今咱们对“批量更新语句sql”大约比较关怀,各位老铁们都想要分析一些“批量更新语句sql”的相关文章。那么小编也在网上收集了一些关于“批量更新语句sql””的相关内容,希望各位老铁们能喜欢,同学们快快来学习一下吧!直接上代码
<update id="modifyCityInfos" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> update city_info <set> provice_code = #{item.proviceCode}, city_code = #{item.cityCode}, county_code=0 ,provice=#{item.proviceName},city=#{item.cityName}, county=#{item.countyName}, address = #{item.address} </set> where com_name=#{item.entrName} </foreach></update>
针对上述代码,介绍下各个属性的意义。
foreach 主要用在构建in条件中,它可以在SQL语句中进行迭代下一个集合。
foreach表示集合中每一个元素进行迭代时的别名
index指定一个名字,用于表示在迭代过程中,每次迭代到的位置。
open表示该语句以什么开始
separator表示在每次进行迭代之间以什么符号作为分隔符
close表示以什么结束
在使用foreach的时候,最关键的是也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:
1:如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2:如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3:如果传入的参数是多个的时候,我们就需要把它们封装一个Map了,当然单参数也可以封装成map
使用批量更新指定的SQL语句应该等价于:
update city_info provice_code =?where com_name = ?;
update city_info provice_code =?where com_name = ?;
update city_info provice_code =?where com_name = ?;
同时,注意: 使用批量更新时,需在数据库连接开启批量操作, 见本人文档
mybatis批量更新时,allowMultiQueries