项目使用:
mybatis,druid,spring
项目需要:
批量更新数据。
前期配置:
1,jdbc.properties ----jdbc.url=jdbc:mysql://ip:port/db?allowMultiQueries=true;
2,spring-mybatis.xml-----
添加
<bean id="wallConfig" class="com.alibaba.druid.wall.WallConfig">
<property name="multiStatementAllow" value="true"></property>
</bean>
<bean id="wallFilter" class="com.alibaba.druid.wall.WallFilter">
<property name="config" ref="wallConfig"></property>
</bean>
在dataSource中添加过滤器
<property name="filters" value="stat,wallConfig" />
具体bean.xml配置:
<update id="batchUpdateAccount" parameterType="java.util.List">
<foreach collection="paramList" item="item" index="index">
update ${item.tabIndex} set
modify_at=#{item.modifyAt},
goods_name=#{item.Name},
end_time=#{item.endTime},
status=0
where
account_id=#{item.accountId}
and data_type=#{item.dataType};
</foreach>
</update>
DAO配置
public void batchUpdateAccount(@Param(value = "paramList") List<Map<String, Object>> paramList);
在service调用即可
遇到的坑:
前期的两个配置少了一个死活不支持,一直报这个错,前期怀疑写的SQL有问题,又怀疑传参格式不支持。最后发现少一个配置。
org.springframework.jdbc.UncategorizedSQLException,java.sql.SQLException: sql injection violation