Spring中JdbcTemplate中使用RowMapper

深藏阁楼爱情的钟 2022-04-06 09:09 305阅读 0赞

Spring中JdbcTemplate中使用RowMapper

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

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

package com.cxl.demo.dao;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import com.cxl.demo.entity.User;

public class UserDaoImpl {

private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {

  1. **this**.jdbcTemplate = jdbcTemplate;
  2. \}
  3. **public** List<User> getUserByName(String username) \{
  4. String sql = "select \* from t\_user where username = ?";
  5. Object\[\] params = **new** Object\[\] \{ username \};
  6. List<User> users = **null**;
  7. /\*\*

* 使用接口实现类

  1. \*/
  2. users = jdbcTemplate.query(sql, params, **new** UserRowMapper());
  3. /\*\*
  4. \* 使用匿名内部类
  5. \* 如果UserRowMapper类只使用一次,单独为其创建一个类多余,可以使用匿名类
  6. \* 省略了书写一个实现类
  7. \*/
  8. users = jdbcTemplate.query(sql, params,
  9. **new** RowMapper<User>() \{
  10. @Override
  11. **public** User mapRow(ResultSet rs, **int** rowNum) **throws** SQLException \{
  12. User user = **new** User();
  13. user.setId(rs.getInt("id"));
  14. user.setUsername(rs.getString("username"));
  15. user.setPassword(rs.getString("password"));
  16. **return** user;
  17. \}
  18. \});
  19. **return** (users != **null** && users.size() > 0) ? users : **null**;
  20. \}
  21. **public** **class** UserRowMapper **implements** RowMapper<User> \{
  22. @Override
  23. **public** User mapRow(ResultSet rs, **int** rowNum) **throws** SQLException \{
  24. User user = **new** User();
  25. user.setId(rs.getInt("id"));
  26. user.setUsername(rs.getString("username"));
  27. user.setPassword(rs.getString("password"));
  28. **return** user;
  29. \}
  30. \}

}

发表评论

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

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

相关阅读