使用spring结果集创建列表
我需要使用使用spring结果集创建列表,spring,postgresql,java-8,Spring,Postgresql,Java 8,我需要使用ResultSet和Java 8创建联系人列表的帮助 我需要按名称筛选列表,仅当名称合适时,才将其添加到列表中。并将fetchSize设置为处理来自Postgres的一百万行 例如: public List <Contact> getAll (String nameFilter) { Pattern pattern = Pattern.compile (nameFilter); List <Contact> contacts =
ResultSet
和Java 8创建联系人列表的帮助
我需要按名称筛选列表,仅当名称合适时,才将其添加到列表中。并将fetchSize
设置为处理来自Postgres的一百万行
例如:
public List <Contact> getAll (String nameFilter) {
Pattern pattern = Pattern.compile (nameFilter);
List <Contact> contacts = new ArrayList <> ();
JdbcTemplate.query ("SELECT * FROM contacts", rs -> {
// here it is necessary maybe to do something like this !pattern.matcher(name).matches()
// and maybe jdbcTemplate.setFetchSize (*how many rows will be better to read from
// postgres? (5,5000,50000 ???) *)
Contacts.add (new Contact (rs.getInt ("id"), rs.getString ("name")));
});
return contacts;
}
public List getAll(字符串名称过滤器){
Pattern=Pattern.compile(nameFilter);
List contacts=new ArrayList();
JdbcTemplate.query(“从联系人中选择*”,rs->{
//在这里,可能需要这样做!pattern.matcher(name.matches())
//也许jdbcTemplate.setFetchSize(*读取多少行更好
//博士后?(5500050000???)
Contacts.add(新联系人(rs.getInt(“id”)、rs.getString(“name”));
});
返回联系人;
}
如何执行此操作?在运行查询之前,需要设置提取大小。请记住,如果使用单例对象,它将影响所有查询,您应该在创建
JdbcTemplate
对象时设置此配置
关于使用功能界面创建列表,类似的操作应该可以:
springJdbcTemplate.query ("SELECT * FROM contacts", rs -> {
while(rs.next()) {
if (pattern.matcher(rs.getString("name")).matches())
contacts.add (new Contact (rs.getInt ("id"), rs.getString ("name")));
}
return null;
});
只需说,如果您可以将模式转换为sql查询,它将更快。较大的提取大小意味着当行集耗尽时,您对数据库的请求次数会更少,但需要更多的内存来保留它。使用较小的fetch大小,您将更频繁地询问数据库,但需要的内存更少。所以这取决于你期望的结果有多大以及你需要什么。速度记忆?这是你的决定。