Spring中JdbcTemplate中使用RowMapper

来源:互联网 发布:linux求平均值 编辑:程序博客网 时间:2024/05/29 16:30

sping中的RowMapper可以将数据中的每一行数据封装成用户定义的类.

我们在数据库查询中,如果返回的类型是用户自定义的类型(其实我们在数据库查询中大部分返回的都是自定义的类)则需要包装,如果是Java自定义的类型,如:String则不需要.

如果sping与hibernate 相结合了,基本上是用不到,大多数都是在spring单独使用时用到.

可以通过建立内部类实现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) {          this.jdbcTemplate = jdbcTemplate;      }      public List<User> getUserByName(String username) {          String sql = "select * from t_user where username = ?";          Object[] params = new Object[] { username };          List<User> users = null;          /**          * 使用接口实现类          */          users = jdbcTemplate.query(sql, params, new UserRowMapper());          /**          * 使用匿名内部类          * 如果UserRowMapper类只使用一次,单独为其创建一个类多余,可以使用匿名类          * 省略了书写一个实现类          */          users = jdbcTemplate.query(sql, params,                  new RowMapper<User>() {                      @Override                      public User mapRow(ResultSet rs, int rowNum) throws SQLException {                          User user = new User();                          user.setId(rs.getInt("id"));                          user.setUsername(rs.getString("username"));                          user.setPassword(rs.getString("password"));                          return user;                      }                  });          return (users != null && users.size() > 0) ? users : null;      }      public class UserRowMapper implements RowMapper<User> {          @Override          public User mapRow(ResultSet rs, int rowNum) throws SQLException {              User user = new User();              user.setId(rs.getInt("id"));              user.setUsername(rs.getString("username"));              user.setPassword(rs.getString("password"));              return user;          }      }  }  
1 0