在Spring中JdbcTemplate中使用RowMapper

本是古典 何须时尚 2022-06-13 04:49 317阅读 0赞

Spring中JdbcTemplate中使用RowMapper

Spring中的RowMapper可以将数据中的每一行数据封装成用户自定义的类。我们在数据库查询中,如果返回的类型是用户自定义的类型(其实我们在数据库查询中大部分返回的都是自定义的类)则需要包装,如果是Java自定义的类型,如:String则不需要.如果sping与hibernate 相结合了,基本上是用不到,大多数都是在spring单独使用时用到.

可以通过建立内部(外部)类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.

  1. package com.cxl.demo.dao;

  2. import java.sql.ResultSet;

  3. import java.sql.SQLException;

  4. import java.util.List;

  5. import org.springframework.jdbc.core.JdbcTemplate;

  6. import org.springframework.jdbc.core.RowMapper;

  7. import com.cxl.demo.entity.User;

  8. public class UserDaoImpl {

  9. private JdbcTemplate jdbcTemplate;

  10. public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {

  11. this.jdbcTemplate = jdbcTemplate;

  12. }

  13. public List getUserByName(String username) {

  14. String sql = “select * from t_user where username = ?”;

  15. Object[] params = new Object[] { username };

  16. List users = null;

  17. /**

  18. * 使用接口实现类

  19. */

  20. users = jdbcTemplate.query(sql, params, new UserRowMapper());

  21. /**

  22. * 使用匿名内部类

  23. * 如果UserRowMapper类只使用一次,单独为其创建一个类多余,可以使用匿名类

  24. * 省略了书写一个实现类

  25. */

  26. users = jdbcTemplate.query(sql, params,

  27. new RowMapper() {

  28. @Override

  29. public User mapRow(ResultSet rs, int rowNum) throws SQLException {

  30. User user = new User();

  31. user.setId(rs.getInt(“id”));

  32. user.setUsername(rs.getString(“username”));

  33. user.setPassword(rs.getString(“password”));

  34. return user;

  35. }

  36. });

  37. return (users != null && users.size() > 0) ? users : null;

  38. }

  39. public class UserRowMapper implements RowMapper {

  40. @Override

  41. public User mapRow(ResultSet rs, int rowNum) throws SQLException {

  42. User user = new User();

  43. user.setId(rs.getInt(“id”));

  44. user.setUsername(rs.getString(“username”));

  45. user.setPassword(rs.getString(“password”));

  46. return user;

  47. }

  48. }

  49. }

发表评论

表情:
评论列表 (有 0 条评论,317人围观)

还没有评论,来说两句吧...

相关阅读