2014-09-30 70 views
2

我有它返回我ResultSet對象的方法:的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對象嗎?
+2

如果從結果集中提取數據並返回自定義類對象,效果會更好。 &使用查詢您獲取數據或通過hibernate對象?如果使用查詢使用'Spring JdbcTemplate'。 – 2014-09-30 10:34:59

回答

2

1是的,你應該關閉一個ResultSet。

2我建議你返回一個對象而不是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; 
     } 

    } 

}