JAVA怎么批量更新mysql_java 关于批量更新操作的实现

批量更新操作

批量更新逻辑:

底层真正的批量更新(一次请求发送批量更新语句)

底层循环发送语句(假批量更新)—本质上就是一条一条更新

批量更新逻辑判断

JdbcTemplate

JdbcUtils.supportsBatchUpdates(ps.getConnection())—判断连接是否支持批量更新

publicint[] batchUpdate(Stringsql,finalBatchPreparedStatementSetterpss)throwsDataAccessException {

if(logger.isDebugEnabled()) {

logger.debug("Executing SQL batch update ["+sql+"]");

}

returnexecute(sql,newPreparedStatementCallback() {

publicint[] doInPreparedStatement(PreparedStatementps)throwsSQLException {

try{

intbatchSize=pss.getBatchSize();

InterruptibleBatchPreparedStatementSetteripss=

(pssinstanceofInterruptibleBatchPreparedStatementSetter ?

(InterruptibleBatchPreparedStatementSetter)pss:null);

if(JdbcUtils.supportsBatchUpdates(ps.getConnection())) {

for(inti= 0;i

pss.setValues(ps,i);

if(ipss!=null&&ipss.isBatchExhausted(i)) {

break;

}

ps.addBatch();

}

returnps.executeBatch();

}

else{

ListrowsAffected=newArrayList();

for(inti= 0;i

pss.setValues(ps,i);

if(ipss!=null&&ipss.isBatchExhausted(i)) {

break;

}

rowsAffected.add(ps.executeUpdate());

}

int[]rowsAffectedArray=newint[rowsAffected.size()];

for(inti= 0;i

rowsAffectedArray[i] =rowsAffected.get(i);

}

returnrowsA

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值