JdbcTemplate查询过滤

时间:2012-09-19 07:00:38

标签: java spring jdbc

Jdbc标准是否可以通过jdbcTemplate.queryoffsetlimit过滤结果回报?

还有一种简单的方法可以将ResultSet(由过滤后的查询返回,如上所述)转换为List<Map<String,String>>结果吗? ListMap中存储行值的行?行名称是地图键,行值是地图值。

或者有一种标准方法可以将行排除在ResultSet之外?

1 个答案:

答案 0 :(得分:0)

看一下JdbcTemplate#setMaxRows(int)

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#setMaxRows%28int%29

这应该应用LIMIT / TOP。

-

我认为OFFSET的定义不是很明确,你可能需要在相关的SQL方言中将其转换为SQL语句。

-

要过滤JDBC驱动程序返回的行并可能构建为Java用户定义的对象类型,请查看ResultSetExtractor和RowMapper。

ResultSetExtractor这用于使用ResultSet#next()迭代ResultSet,这允许它根据业务逻辑进行过滤和跳过。此方法可能会使用RowMapper类型来提取它想要保留的单行数据,或者它可以自行进行提取。

http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/jdbc/core/ResultSetExtractor.html

RowMapper这用于将单行变为有效,它可能只是一个List。此方法使用ResultSet#getWhatever(int)。

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/RowMapper.html

然后检查将ResultSetExtractor类型作为参数之一的JdbcTemplate方法。这可能是一个很好的例子:

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#query%28java.lang.String,%20java.lang。对象[],%20org.springframework.jdbc.core.ResultSetExtractor%29