
这段时间都纠缠于 Java 如何操作 PostgreSQL 数据库上,千方百计的为求得更好的性能。为此我们用上了 Batch, 或用 id = any(?) 这种更 PostgreSQL 化的数组参数操作。其实它还有更多数组方面的花样可以玩,毕竟 PostgreSQL 数据库有一种广纳百川的胸怀,总有好的新特性能在 PostgreSQL 中首先体验到。
回到之前的一篇 postgres in (?,?) 和 =any(?) 用法/性能对比,其中关于如何向查询语句中
id = any(?)占位符传入数组参数的代码是1Connection conn = datasource.getConnection(); 2 3String query = "select * from users where id = any(?)"; 4PreparedStatement pstmt = conn.prepareStatement(query); 5Object[] params = new Object[]{1, 2, 3}; 6pstmt.setArray(1, conn.createArrayOf("int", params)); 7ResultSet rs = pstmt.executeQuery();在 PreparedStatement(PgPreparedStatement) 中设置数组参数的函数是用 Read More
- 以前一篇中写到了 hibernate 调用存储过程,这里介绍 Spring 借道 JdbcTemplate 如何调用数据库存储过程。还是以前面的那个 DB2 存储过程为例,该过程的代码如下:
1CREATE procedure selectAllUsers(IN piAge INTEGER) 2DYNAMIC RESULT SETS 1 3BEGIN 4 DECLARE temp_cursor1 CURSOR WITH RETURN TO CLIENT FOR 5 SELECT * FROM test where age < piAge; 6 OPEN temp_cursor1; 7END;
这个过程中最后一行直接打开了一个游标,也就是返回了一个结果集。调用存储过程的方法应该看看 org.springframework.jdbc.core.JdbcTemplate 的各个 execute() 方法,具体点就是带了 CallableStatementCallback<T> 参数的那两个 execute(),究底的话又归结为其中之一。 Read More