ibatis的批处理问题
public <T> boolean batchUpdObject(String sqlName,List<T> list){ if(null == list){ return false; }else{ if(list.size() == 0){ return true; }else{ SqlMapClient smc = this.getSqlMapClient(); try { smc.startTransaction(); smc.startBatch(); for(Object o : list){ T param = (T)o; smc.update(sqlName,param); } smc.executeBatch(); smc.commitTransaction(); return true; } catch (SQLException e) { if(null != smc){ try { smc.getCurrentConnection().rollback(); } catch (SQLException e1) { logger.error(e1.getMessage()); } } logger.error(e.getMessage()); return false; }finally{ if(null != smc){ try { smc.endTransaction(); } catch (SQLException e) { logger.error(e.getMessage()); } } } } } }
一段ibatis的批处理代码,但是在执行的时候日志只记录了语句准备记录
[16:59:45] DEBUG - JakartaCommonsLoggingImpl.debug(27) | {conn-100011} Preparing Statement: update xxxx set xxxxxx=? ,xxxxxx=? ,xxxxx=? ,xxxxx= ? where xxxxxxx= ?
并未记录Executing Statement的记录和参数记录,初步怀疑是因为事物未提交导致的,请大神能帮忙分析下呢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我用过Mybatis的,输出的SQL日志也是只有准备语句,不过你可以额外打印出参数,如果你想输出实际执行的语句(即不显示?号,而是带实际参数的),推荐使用p6spy,这个是无侵入性的工具哦,不需要修改项目代码。