免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1627 | 回复: 0
打印 上一主题 下一主题

[求助] jdbcTemplate批量插入出现异常 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-04 17:33 |只看该作者 |倒序浏览
在使用jdbctemplate的批量操作的时候  

调用jdbcTemplate.batchUpdate,他的原理机制是,集合一定数量的sql,一起发送到数据库,这样减少与数据库频繁交互的成本  
但现在有一个问题就是,我这有50条sql,批量插入,然后有一条有问题,我如何让这一条执行失败时,不影响其余49条语句的执行呢?  

下面是我自己封装的一个方法  
批量插入这个list到数据库去,如果出现什么值太大,违反唯一性约束什么之类的异常,我的那个catch根本就捕获不住,我最多只能知道这个list插入有问题,没法实现list中一条记录有问题,不影响其他记录的执行
  1. public  void insert(final List<?> lists) {  
  2.     // 获取insert语句  eg:sql = insert into user (id,name,age) values (?,?,?)  
  3.     String sql = SqlUtils.getInsertSql(lists.get(0));  
  4.     jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {  
  5.         @Override  
  6.         public void setValues(PreparedStatement ps, int i) {  
  7.             Object value = lists.get(i);  
  8.             // objects = 获取代替?的具体值  
  9.             Object[] objects = SqlUtils.getValues(value);  
  10.             for (int k = 0; k < objects.length; k++) {  
  11.                 try {  
  12.                     ps.setObject(k + 1, objects[k]);  
  13.                 } catch (SQLException e) {   
  14.                     log.error("数据库异常 -- "+value.getClass().getSimpleName(),e);  
  15.                 }  
  16.             }  
  17.         }  
  18.   
  19.         @Override  
  20.         public int getBatchSize() {  
  21.             return lists.size();  
  22.         }  
  23.     });  
  24. }  
复制代码

http://bbs.ibeifeng.com/read-htm-tid-66060.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP