HasorDB RowMapper(数据读取并转换成对象)

2021-12-30 11:20 更新

将 ​ResultSet ​一行数据读取出来并且转换成对象的工作是 ​RowMapper ​来负责完成。

在 HasorDB 中一共内置了三种 RowMapper,除此之外用户可以自己所以扩展。

  • ColumnMapRowMapper ​将行转换为 Map
  • MappingRowMapper ​基于 ​对象映射​ 处理行数据。
  • SingleColumnRowMapper ​只有当查询结果中包含一列数据的时候才可以使用。它会利用 ​TypeHandler ​机制读取出这一列数据。

ColumnMapRowMapper

使用 ​ColumnMapRowMapper

String querySql = "select * from test_user where age > 40";
RowMapper rowMapper = new ColumnMapRowMapper();
List<Map<String, Object>> result = jdbcTemplate.query(querySql, rowMapper);

下列是简化形式

List<Map<String, Object>> result = jdbcTemplate.queryForList(querySql);

MappingRowMapper

使用 ​MappingRowMapper

String querySql = "select * from test_user where age > 40";
RowMapper rowMapper = new MappingRowMapper<>(TestUser.class);
List<TestUser> result = jdbcTemplate.query(querySql, rowMapper);

下列是简化形式

List<TestUser> result = jdbcTemplate.queryForList(querySql, TestUser.class);

SingleColumnRowMapper

使用​ SingleColumnRowMapper

String querySql = "select name from test_user where age > 40";
RowMapper rowMapper = new SingleColumnRowMapper<>(String.class);
List<String> result = jdbcTemplate.query(querySql, rowMapper);

下列是简化形式

List<String> result = jdbcTemplate.queryForList(querySql, String.class);

自定义 RowMapper

读取一行数据,并且只设置 ​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);


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号