【问题标题】:Execute more query before close connection using sql2o在使用 sql2o 关闭连接之前执行更多查询
【发布时间】:2019-08-30 09:49:36
【问题描述】:

我正在使用执行多个查询的函数。我想让它更快,并且在单个之后不要打开连接。

我正在使用 sql2o 库将我的 java 程序与 postgresql 连接起来。 ConnectionClass 基于 Singleton 模式。

在此代码中,connecton.open() 函数是调用执行查询时间的次数。

public class ConnectionClass{

        private static final ConnectionClass db = new ConnectionClass();
        private final Sql2o sql2o;
        private Connection connection;

private InfraTramDAO() {
        sql2o = new Sql2o("jdbc:postgresql:...............");
    }

private List<Map<String, Object>> queryToList(String query) {

        List<Map<String, Object>> returnList = connection.createQuery(complexSql).executeAndFetchTable().asList();

        return returnList;
    }
}

public void makeObject(FileMapper fileMapper ) {
        ConnectionClass db = ConnectionClass.getInstance();
        db.setConnection(db.getSql2o().open());
        universalCreator(fileMapper );      //function execute few queries
        db.getConnection().close();

    }

【问题讨论】:

    标签: java jdbc sql2o


    【解决方案1】:

    您尝试过批处理吗? 看例子here

    public void insertABunchOfRows(){
        final String sql = "INSERT INTO SomeTable(id, value) VALUES (:id, :value)";
    
        try (Connection con = sql2o.beginTransaction()) {
            Query query = con.createQuery(sql);
    
            for (int i = 0; i < 100; i++){
                query.addParameter("id", i).addParameter("value", "foo" + i)
                        .addToBatch();
            }
    
            query.executeBatch(); // executes entire batch
            con.commit();         // remember to call commit(), else sql2o will automatically rollback.
        }
    }
    

    【讨论】:

    • 请将链接的关键内容添加到您的答案中。
    猜你喜欢
    • 2021-02-24
    • 2022-01-11
    • 2021-06-12
    • 1970-01-01
    • 2013-03-28
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多