我正在使用spring jdbc。我使用以下代码来获取jdbc连接
public void setDataSource(DataSource dataSource){
this.dataSource = dataSource;
setJdbcTemplate(new JdbcTemplate(this.dataSource));
setNamedParamdbcTemplate(new NamedParameterJdbcTemplate(this.dataSource));
if(connectionUrl==null){
Connection con;
try {
con = getJdbcTemplate().getDataSource().getConnection();
connectionUrl = con.getMetaData().getURL();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
但我得到以下异常。
配置的阻止超时内没有可用的托管连接 (0 [ms])
我通过调试代码获取了打印件。以上是getJdbcTemplate().getDataSource()
代码的输出。
Click here for the image
如果我写了getJdbcTemplate().getDataSource().getConnection();
,则会出现以下异常。我怎么才能访问
connectionURL图像中存在。
配置的阻塞超时内没有可用的托管连接(0 [毫秒])
答案 0 :(得分:0)
您需要在Spring上下文文件中配置DataSource,如下所示,并附上数据库连接详细信息。
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testDB" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
要访问jdbcTemplate API,您需要注入java类。
@Repository
public class EmployeeDAO{
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Emplyee> getEmployeeList(){
//If you want to print the connection URL in your method
System.out.println("Connection URL: "+ jdbcTemplate.getDataSource().getConnection().getMetaData().getURL());
}
}
这将打印您在spring上下文文件中配置的DataSource URL(jdbc:mysql:// localhost:3306 / testDB)