java后台数据批量处理

来源:互联网 发布:京东云服务器绑定域名 编辑:程序博客网 时间:2024/05/21 20:24

当对数据库操作的数据量比较大的时候,批量处理可以大大得减少系统访问数据库的次数,提高了系统的效率

    public boolean SecondUpdateChEn(Session session,
            List<OriginDocManage> doclist) throws SQLException  {
        try {

            //获得该Session使用的数据库连接,这里的session是传过来的

            Connection con=session.connection();
            //通过JDBC API执行用于批量更新的SQL语句
            PreparedStatement stmt=con.prepareStatement("update origin_doc_manage set Title_en=?,Abstract_en=? where Pub_no=?");
            int i=1;
            for(AbstractOriginDocManage doc:doclist){
                System.out.println("****************************EN"+(i)+"***********************");
                stmt.setString(1, doc.getTitleEn());
                stmt.setString(2, doc.getAbstractEn());
                String pubno = doc.getPubNo().substring(0, doc.getPubNo().length() - 1);
                stmt.setString(3, pubno);
                stmt.addBatch();
                if(i%50==0||i==doclist.size()){
                    stmt.executeBatch();
                    stmt.clearBatch();
                }
                i++;    
            }
            return true;
        } catch (RuntimeException re) {
            return false;
        }
    }

以下的都是按照我自己的理解,会有偏差,API的文档的解释对于我来说不如这样理解起来容易。所以大家避免被我误导,去参考相应的API文档详细了解

PreparedStatement 经过预编译的,执行起来快。全部继承了Statement  并在此基础上添加了一些东西。 所以一般使用它

 stmt.setString(1, doc.getTitleEn());给sql语句中相应的字段赋值,1,2,3...要对应SQL语句set后面的字段的顺序!!

.addBatch() 感觉和list的某系地方相似,将要处理的数据一条条得放到一个地方

.executeBatch()提交数据,把.addBatch()积攒起来的数据一起处理。这一批数据只需要访问一次数据库

0 0