解决方案 »

  1.   

    会不会影响效率,比如数据库或execl中已经有10万条数据。每一条遍历,这性能。
      

  2.   

    select count(id) from student where id=?1;
    此结果作为判断条件,这样查询应该也可以优化下。
      

  3.   

    直接插入  异常也continue  最后commit
      

  4.   

    看数量量和出现重复的几率。查数据库--两个数据比对,这中间耗时最大的应该是查数据库,因为需要去拿数据库连接,重复不听的geConnection很耗时。另一种如果数据库并发操作不高的话,可以将数据一次性全取出来,用map装起来,然后利用程序从excel中读到的数据进行对比,如果成功则一批批的插入数据库。
      

  5.   

    很好的回答了 把id加索引
    大家好  我想问下 select count(id) from student where id=?1   where id = ?1 是什么意思 ?
      

  6.   

    在sql里面 比在代码里面判断 方便 快速。。执行一次sql就好了。比如: 
    IF not EXISTS  (select * from a where item_id=@itemId and person_id=@personId) 
                                             insert into a values(@itemId, @personId, getDate())
      

  7.   

    出现异常调用的资源更加多,当然如果异常出现少的话,相比每一个插入都要查询一下来说资源就少了。不过一般都不用唯一性约束异常来做吧,异常多了数据库错误的几率会更加大吧。如果能够保证新插入的数据,不管重复或不重复都是正确的数据,直接先delete然后insert。
      

  8.   

    看需求,你只是为了返回给客户端提示导入失败,所以考虑使用异常捕获就可以了,而且简单、靠谱,并发都不用考虑。还有根本不需要区分具体是抛得什么异常,只要是exception就说明程序报错了,那肯定是失败了