在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’或'jdbcTemplate‘是必需的”
发布于 2012-05-13 22:33:00
您可以使用以下方法之一。第一个方法是首选/推荐使用dataSource,因为您不会在公共接口中公开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);
}
}发布于 2014-04-14 07:35:56
我甚至觉得将数据源作为构造函数注入到DAO中是不必要的编码步骤。为什么不将Spring config XML中的数据源注入到JDBC模板中,并在每个DAO中只获取jdbctTemplate对象。
<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
https://stackoverflow.com/questions/10570521
复制相似问题