最近用MyBatis做开发的时候发现,MyBatis有个小小的缺点,不支持批量update?
这里的批量更新不是对一批数据只更改相同的状态,而是每条update语句均不一样。MyBatis可以做批量insert,把多个插入语句拼接成一条sql,Mybatis的驱动...
这里的批量更新不是对一批数据只更改相同的状态,而是每条update语句均不一样。MyBatis可以做批量insert,把多个插入语句拼接成一条sql,Mybatis的驱动可以支持,但是,多个update拼接成一条update传给Mybatis的时候,就提示出现语法问题了。最后只能用JdbcTemplate来实现了。这个Mybatis究竟有没有批量的update?
展开
3个回答
展开全部
有的
Configuration c= this.getSqlSession().getConfiguration();
ManagedTransactionFactory managedTransactionFactory = new ManagedTransactionFactory();
BatchExecutor batchExecutor=new BatchExecutor(c,managedTransactionFactory.newTransaction(this.getSqlSession().getConnection(),false));
int i = 0;
for (T entity : collection) {
batchExecutor.doUpdate(c.getMappedStatement(sql), entity);
if (i++ > 0 && i % BATCH_SIZE == 0) {
batchExecutor.doFlushStatements();
}
}
batchExecutor.doFlushStatements();
Configuration c= this.getSqlSession().getConfiguration();
ManagedTransactionFactory managedTransactionFactory = new ManagedTransactionFactory();
BatchExecutor batchExecutor=new BatchExecutor(c,managedTransactionFactory.newTransaction(this.getSqlSession().getConnection(),false));
int i = 0;
for (T entity : collection) {
batchExecutor.doUpdate(c.getMappedStatement(sql), entity);
if (i++ > 0 && i % BATCH_SIZE == 0) {
batchExecutor.doFlushStatements();
}
}
batchExecutor.doFlushStatements();
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以写存储过程的实现你那个批量update,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是更新一个表的数据吗?要是一张表的话、使用if应该可以吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询