ibatis的批处理问题

发布于 2021-11-15 11:54:08 字数 1809 浏览 772 评论 1

        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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤檠 2021-11-17 01:54:43

我用过Mybatis的,输出的SQL日志也是只有准备语句,不过你可以额外打印出参数,如果你想输出实际执行的语句(即不显示?号,而是带实际参数的),推荐使用p6spy,这个是无侵入性的工具哦,不需要修改项目代码。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文