spring3-annotation-JdbcDaoSupport
Posted
技术标签:
【中文标题】spring3-annotation-JdbcDaoSupport【英文标题】: 【发布时间】:2012-05-21 04:21:05 【问题描述】:在dao中使用注解
@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:需要“dataSource”或“jdbcTemplate”
我不想用:
<bean id="termsDao" class="com.manage.base.dao.impl.TestDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
这段代码设置在xml中,而“jdbcTemplate”已经在其他“spring-xml”中定义了。
如何通过注解解决这个问题:“'dataSource' or 'jdbcTemplate' is required”
【问题讨论】:
解决方法:forum.springsource.org/… 【参考方案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);
【讨论】:
如果您使用第一种方法,DataSource 是否引用 applicationContext.xml 中定义的数据源:DaoSupport
:***.com/a/21992433/173149【参考方案2】:
我什至觉得将数据源作为 DAO 的构造函数注入是不必要的编码步骤。 为什么不将 Spring config 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
【讨论】:
JdbcDaoSupport 需要注入 jdbctemplate 属性。你会在这里得到一个运行时异常以上是关于spring3-annotation-JdbcDaoSupport的主要内容,如果未能解决你的问题,请参考以下文章