网上的方法试过好几次,我记得前几天下面这种写法还可以顺利执行的,后来我大改了一下,在改回来就行不通了
使用注解获取不到JdbcTemplate,使用配置文件的方式又无法重写getset方法,所以很没辙
数据层
@Repository
public class DbUtil extends JdbcDaoSupport {
@Autowired
public void setDataSource22(DataSource dataSource) {
setDataSource(dataSource);
// 重新部署时可以输出对象,并且输出了两次
System.out.println(getJdbcTemplate());
}
public List<Map<String, Object>> queryList(String sql,Object[] obj){
// 部署完毕从jsp页面执行到这儿时输出值为空
System.out.println(getJdbcTemplate());
List<Map<String, Object>> queryForList = getJdbcTemplate().queryForList(sql,obj);
return queryForList;
}
IOC配置文件
<!-- 配置JdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="dbutil" class="com.library.dao.DbUtil">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 加载外部文件 -->
<context:property-placeholder location="/WEB-INF/c3p0.properties"/>
<!-- C3P0连接池配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${driverClass}" />
<property name="jdbcUrl" value="${jdbcUrl}" />
<property name="user" value="${user}" />
<property name="password" value="${password}" />
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数,Default:3 -->
<property name="acquireIncrement" value="${acquireIncrement}" />
<!-- 初始化时获取的连接池数量,Default:3 -->
<property name="initialPoolSize" value="${initialPoolSize}" />
<!-- 连接池中保留的最小连接数,Default:3 -->
<property name="minPoolSize" value="${minPoolSize}" />
<!-- 连接池中保留的最大连接数,Default:15 -->
<property name="maxPoolSize" value="${maxPoolSize}" />
</bean>