1.queryForObject
- 其中的 RowMapper 指定如何去映射结果集的行, 常用的实现类为 BeanPropertyRowMapper
- 使用 SQL 中列的别名完成列名和类的属性名的映射. 例如 last_name lastName
-不支持级联属性(如:depatmant.id). JdbcTemplate 到底是一个 JDBC 的小工具, 而不是 ORM 框架
String sql = "select id,last_name name,email from employees where id=?"; RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class); Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 1); System.out.println(employee);
2.配置NamedParameterJdbcTemplate,此对象可以使用具名参数,其没有无参数的构造器
<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" id="namedParameterJdbcTemplate"> <constructor-arg ref="dataSource"></constructor-arg> </bean>
3.使用具名参数时, 可以使用 update(String sql, SqlParameterSource paramSource) 方法进行更新操作
-SQL 语句中的参数名和类的属性一致!
-使用 SqlParameterSource 的 BeanPropertySqlParameterSource 实现类作为参数.
String sql = "insert into employees (last_name,email,dept_id) values(:name,:email,:deptId)"; Employee employee = new Employee(); employee.setEmail("gg@gmail.com"); employee.setName("yaso"); employee.setDeptId(3); SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(employee); namedParameterJdbcTemplate.update(sql, parameterSource);