spring3-注解JdbcDaoSupport(spring3-annotation-JdbcDa

2019-06-24 09:27发布

在道使用注释

@Repository("testDao")
public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{

@Override
public Object addObject(String sqlid, Object obj) {
    // TODO Auto-generated method stub
    return null;
}

java.lang.IllegalArgumentException异常:由造成“数据源”或“JdbcTemplate的”要求

我不想使用:

<bean id="termsDao" class="com.manage.base.dao.impl.TestDaoImpl">
    <property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>

这个代码在XML设置,并且“的JdbcTemplate”已在其他“弹簧XML”被定义。

如何通过注解来解决这个问题:“‘数据源’或‘JdbcTemplate的’需要”

Answer 1:

您可以使用下面的方法之一。 第一种 - 以一个数据源是首选/推荐你不要在你的公共接口暴露一个springframework的类。 双方将合作。

@Repository("testDao")
public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{

  @Autowired
  TestDaoImpl(DataSource dataSource) {
    setDataSource(dataSource);
  }
}

要么

@Repository("testDao")
public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{

  @Autowired
  TestDaoImpl(JDBCTemplate template) {
    setJdbcTemplate(template);
  }
}


Answer 2:

我甚至觉得注入数据源作为构造你的DAO是不必要的编码步骤。 为什么在Spring XML配置到JDBC模板不注入数据源和刚刚获得jdbctTemplate对象在每一个DAO。

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>
and let your DAO extend JDBCSupport class.

public class PersonDao extends JdbcDaoSupport{
public List<Person> selectAll(){
    String selectAllSql = "SELECT * FROM PERSON;";

    return getJdbcTemplate().query(selectAllSql, new PersonRowMapper());

........}

}

完整的示例: http://www.studytrails.com/frameworks/spring/spring-jdbc-dao-support.jsp



文章来源: spring3-annotation-JdbcDaoSupport
标签: spring jdbc dao