与spring一起使用jdbctemplate时,我应该有一个基类吗?

Bla*_*man 1 java spring jdbc jdbctemplate

我将在春季从休眠模式迁移到jdbctemplate,并且需要一些指导。

我将先创建一个UserDao,然后创建一个UserDaoImpl

在我的servlet.xml文件中,创建了我的数据源bean。

现在,我正在阅读:http : //static.springsource.org/spring/docs/2.0.x/reference/jdbc.html

它说有一个私有方法:

私人JdbcTemplate jdbcTemplate;

所以我可以这样创建UserDaoImpl:

public class UserDaoImpl implements UserDao {
   private JdbcTemplate jdbcTemplate;

   public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
}

}
Run Code Online (Sandbox Code Playgroud)
  1. 我在那里需要设置数据源吗?还是可以使用某种注释?
  2. 我可以将此代码移至GenericDao / GenericDaoImpl之类的基类吗?(如果是这样,我是否将jdbcTempalte保留为私有或受保护?

使用hibernate,我可以使用泛型在基类中添加基本查询,我想我无法使用jdbc进行此操作,因为没有任何东西真正映射到我的实体正确吗?

更新

所以我的GenericDaoImpl看起来像:

public class GenericDaoImpl<T> extends JdbcDaoSupport implements GenericDao<T> {

    private JdbcTemplate jdbcTemplate;

 }
Run Code Online (Sandbox Code Playgroud)

然后我的UserDaoImpl看起来像:

@Repository
public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao {

}
Run Code Online (Sandbox Code Playgroud)
  1. 我现在不能在我的方法中使用this.jdbcTemplate吗?我该怎么办?
  2. 在我的GenericDaoImpl中,我可以有一个setDataSource,因为它由JdbcDaoSupport标记为final。
    我现在如何自动连接数据源?

Dav*_*ton 5

假设您使用的是Spring 3,则可以使用XML配置或注释将数据源注入到父DAO类中。在XML中,“子” bean可以使用extends关键字来使用超类的dataSource

JdbcDaoSupport是一个小工具类捆绑了一些共同的功能,像dataSourcejdbcTemplate性质(和其他一些东西)。无论如何,这只是人们为自己创建的那些小便利类之一,因此提供了它。

使用getDataSource()检索的数据源。你不需要一个setDataSource(),里面有一个含铅的JdbcDaoSupport; 你将做点什么不同的?如果您真的需要一个,那么您可能不想使用JdbcDaoSupport。除了简单的获取器/设置器之外,需要任何东西都是相对不寻常的。