SpringDAO:RowMapper如何在内部工作以从数据库中获取数据

时间:2016-07-12 15:19:41

标签: java spring spring-jdbc

下面的

是从数据库中获取记录并将其显示给控制台的代码。但我想知道jdbcTemplate.query(sql, RowMapper rm)方法如何像 ResultSet mapRow()函数中实例化一样,以及此方法的第二参数的用法是什么。任何人都可以解释jdbcTemplate.query(sql, RowMapper rm)方法的工作原理吗?

假设已经提供了 config.xml Employee bean类 EmployeeDAO接口,以下是为 EmployeeDaoImpl类提供的代码< / strong>

存储库类

@Repository(value="empDAO")
public class EmployeeDAOImpl implements EmployeeDAO{
    private JdbcTemplate jdbcTemplate;

    @Autowired
    public void setDs(DataSource ds) {
        this.jdbcTemplate = new JdbcTemplate(ds);
    }

    @Override
    public List<Employee> selectAllEmployee() {
        String sql = "select * from Employee";
        List<Employee> listOfEmployee = new ArrayList<Employee>();

        listOfEmployee  = jdbcTemplate.query(sql, new RowMapper<Employee>(){
            public Employee mapRow(ResultSet rs, int rowNum) throws SQLException{
                Employee employee = new Employee();
                employee.setEmployeeId(rs.getInt("employeeId"));
                employee.setName(rs.getString("name"));
                employee.setSalary(rs.getDouble("salary"));

                return employee;
            }
        });

        return listOfEmployee;
    }
}

1 个答案:

答案 0 :(得分:0)

一般来说,jdbcTemplate将从您的SQL创建一个预准备语句,执行该语句,返回结果集并使用RowMapper将每一行映射到Java对象。

让我们引用Spring的文档:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/RowMapper.html