【发布时间】:2015-06-12 20:11:01
【问题描述】:
我搜索了网络的每个角落,但没有结果。 我正在使用 Spring 并尝试将 Jdbc 操作注入到我的 DaoImpl 类中。
似乎我错过了一些东西,因为 DaoImpl 类在查询某些东西时返回 null,我做错了什么?
Bean 配置:
<bean id="transactionDao" class="jdbc.dao.OracleTransactionDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- ORACLE CONNECTION -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${url}" />
<property name="username" value="${dbname}" />
<property name="password" value="${dbpassword}" />
</bean>
接口道:
interface TransactionDao extends Serializable {
public abstract void insert (Transaction transaction);
正如您在 bean 配置和下面的此类中看到的那样,我目前正在尝试注入 JdbcTemplate 并尝试使用 JdbcDaoSupport 的扩展方法 实施道:
OracleTransactionDao extends JdbcDaoSupport implements
TransactionDao {
@Autowired
JdbcTemplate template;
@Override
public void insert (Transaction transaction) {
List<Map<String, Object>> list;
try{
list = template
.queryForList("SELECT * FROM CUSTOMER");
}catch(NullPointerException e) {
list = this.queryForList("SELECT * FROM CUSTOMER");
}
System.out.println("called insert" + list.size());
}
我的主要: ClassPathXmlApplicationContext 上下文 = 新 ClassPathXmlApplicationContext( “beanConfigs.xml”); context.registerShutdownHook(); OracleTransactionDao dao = (OracleTransactionDao) 上下文 .getBean("transactionDao");
我一定是遗漏了一些细节吗?
提前致谢!
【问题讨论】:
-
请将 driverName 设置为 "oracle.jdbc.OracleDriver" 看看是否有效
-
驱动程序在 main 中工作,所以我不认为它是驱动程序。它与将 jdbctemplate 注入到我的 DaoObj 中有关,我现在找到了一种解决方法,注入上下文到 DaoObj,然后在我的 DaoObjImpl 中安装一个静态 jdbctemplate,驱动程序没有抱怨。谢谢
-
这很奇怪,因为我已经为您的场景创建了单元测试并且它有效
-
唯一的区别是你安装的驱动程序?
标签: spring jdbc dao jdbctemplate