將 ?ResultSet
?一行數(shù)據(jù)讀取出來并且轉(zhuǎn)換成對(duì)象的工作是 ?RowMapper
?來負(fù)責(zé)完成。
在 HasorDB 中一共內(nèi)置了三種 RowMapper,除此之外用戶可以自己所以擴(kuò)展。
ColumnMapRowMapper
?將行轉(zhuǎn)換為 MapMappingRowMapper
?基于 ?對(duì)象映射
? 處理行數(shù)據(jù)。SingleColumnRowMapper
?只有當(dāng)查詢結(jié)果中包含一列數(shù)據(jù)的時(shí)候才可以使用。它會(huì)利用 ?TypeHandler
?機(jī)制讀取出這一列數(shù)據(jù)。使用 ?ColumnMapRowMapper
?
String querySql = "select * from test_user where age > 40";
RowMapper rowMapper = new ColumnMapRowMapper();
List<Map<String, Object>> result = jdbcTemplate.query(querySql, rowMapper);
下列是簡(jiǎn)化形式
List<Map<String, Object>> result = jdbcTemplate.queryForList(querySql);
使用 ?MappingRowMapper
?
String querySql = "select * from test_user where age > 40";
RowMapper rowMapper = new MappingRowMapper<>(TestUser.class);
List<TestUser> result = jdbcTemplate.query(querySql, rowMapper);
下列是簡(jiǎn)化形式
List<TestUser> result = jdbcTemplate.queryForList(querySql, TestUser.class);
使用? SingleColumnRowMapper
?
String querySql = "select name from test_user where age > 40";
RowMapper rowMapper = new SingleColumnRowMapper<>(String.class);
List<String> result = jdbcTemplate.query(querySql, rowMapper);
下列是簡(jiǎn)化形式
List<String> result = jdbcTemplate.queryForList(querySql, String.class);
讀取一行數(shù)據(jù),并且只設(shè)置 ?age
?和 ?name
?
String queryString = "select * from test_user where age > 40";
RowMapper rowMapper = new RowMapper<TestUser>() {
public TestUser mapRow(ResultSet rs,int rowNum)throws SQLException{
TestUser testUser=new TestUser();
testUser.setAge(rs.getInt("age"));
testUser.setName(rs.getString("name"));
return testUser;
}
};
List<TestUser> mapList = jdbcTemplate.query(queryString, rowMapper);
更多建議: