频道栏目
首页 > 数据库 > 其他综合 > 正文
mybatis支持批量update
2018-09-27 11:46:22           
收藏   我要投稿

有的时候我们需要将我们拼接的多条update语句放在mysql一个标签去执行,像平常那样是不行的。

这就需要我们改一些东西了,首先我们需要在我们jdbcurl上拼接上allowMultiQueries=true,如下:

url="jdbc:mysql://localhost:8066/TESTDBallowMultiQueries=true"

这个时候我们就可以在我们的标签中写多个update语句了

如果update语句太多的话,比如有个上千条:我们可以在mysql 的my.cnf中配置如下:

wait_timeout=31536000

interactive_timeout=31536000

oracle数据库

update table_name

status = #{item.status,jdbcType=INTEGER},

where id = #{item.id,jdbcType=BIGINT}

mysql数据库

mysql数据库采用一下写法即可执行,但是数据库连接必须配置:&allowMultiQueries=true

例如:jdbc:mysql://192.168.1.232:3306/testuseUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true

update table_name

status = #{item.status,jdbcType=INTEGER},

where id = #{item.id,jdbcType=BIGINT}

当然我们页可以在代码中动态拼接如下:

public int batchUpdateTfrData(IRequest r, List aeTfrIdList, String mes, String accountStatus) {

StringBuffer str = new StringBuffer();

for(int i = 0; i < aeTfrIdList.size(); ++i) {

str.append("update hsae_ae_tfr_events set ACCOUNTING_STATUS ");

str.append(" = '" + accountStatus + "'");

if (mes != null) {

str.append(", ACCOUNTING_REMARKS");

str.append(" = '" + mes + "'");

}

str.append(CommonUtils.whoUpdate(r));

str.append(" where TFR_EVENT_ID =");

str.append(aeTfrIdList.get(i));

str.append(";");

}

this.aeEventBatchesMapper.updateSourceData(str.toString());

return aeTfrIdList.size();

}

xml:

${sqlText}

点击复制链接 与好友分享!回本站首页
相关TAG标签 mybatis 批量 update
上一篇:Mysql创建临时表
下一篇:MySQL数据库之字符串类型
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站