Transaction中的ResultSet

时间:2014-09-30 10:32:13

标签: java spring hibernate jdbc

我有一个方法可以返回ResultSet个对象:

  @Repository
  public class SomeDAOImpl implements SomeDAO{
    @Override
    public ResultSet getSomething()
    {
     ...
    }
  }

这就是我所说的:

@Service
public class SomeServiceImpl implements SomeService{
   @Autowired
   private SomeDAO someDAO;

   @Transactional
   @Override
   public void doSomething()
   {
      someDAO.getSomething();
      ...
   }
}

问题:

  1. 我必须关闭ResultSet吗?
  2. 可以返回ResultSet对象吗?

1 个答案:

答案 0 :(得分:2)

1是的,你应该关闭一个ResultSet。

2我建议你返回一个Object而不是ResultSet。

这里的草稿应该是...... Here教程。

@Repository
public class SomeDAOImpl implements SomeDAO{

        @Override
        public User getSomething(String username){
            User user = getJdbcTemplate().queryForObject("SELECT * FROM USER WHERE USERNAME = ?",
            new Object[] { username },
            new UserMapper()
            );
           return user;
        }

        private class UserMapper 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.setName(rs.getString("NAME"));
            return user;
        }

     }

}
相关问题