使用Spring的JdbcTemplate访问数据库

JdbcTemplate模板可以简化JDBC操作,但是创建一个JdbcTemplate需要一个DataSource接口,在Spring中,当然就是向JdbcTemplate中注入一个DataSource,然后通过JdbcTemplate来获取一个连接(Connection)。

假设SQL Server 2000数据库(新建的数据库名称为hibernate)中有一张person表,简单地记录了人员的详细信息。

使用Spring的IOC机制实现注入,配置XML代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


<bean id="springDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url"
value="jdbc:microsoft:sqlserver://localhost:1433;databasename=hibernate">
</property>
<property name="username" value="sa"></property>
<property name="password" value="111111"></property>
</bean>


<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate" abstract="false"
lazy-init="false" autowire="default" dependency-check="default">
<property name="dataSource">
<ref bean="springDataSource" />
</property>
</bean>

</beans>

首先编写一个PersonDao,代码如下所示:

package org.shirdrn.jdbcTemplate.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.DataSource;

import org.shirdrn.interf.IPersonDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class PersonDao implements IPersonDao {
private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { // 注入JdbcTemplate
this.jdbcTemplate = jdbcTemplate;
}

public Connection getConnection(){ // 获取Connection
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
DataSource springDataSource = (DataSource)ctx.getBean("springDataSource");
JdbcTemplate jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate");
/*jdbcTemplate.setDataSource(springDataSource);
setJdbcTemplate(jdbcTemplate); */
DataSource dataSource = jdbcTemplate.getDataSource();
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

public ResultSet queryPersons(String sql){
ResultSet rs = null;
try {
Connection connection = getConnection();
Statement st = connection.createStatement();
rs = st.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
}

上面注释掉的两行代码:

jdbcTemplate.setDataSource(springDataSource);
setJdbcTemplate(jdbcTemplate);

其实是多余的,实际上Spring的IOC容器会自动检测并自动注入的。

建立测试主函数:

package org.shirdrn.main;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.shirdrn.jdbcTemplate.dao;

public class Main {

public static void main(String[] args){
PersonDao pd = new PersonDao();
ResultSet rs = pd.queryPersons("select * from person");
int n = 0;
try {
while(rs.next()){
n++;
System.out.println("id = "+rs.getString("id"));
System.out.println("name = "+rs.getString("name"));
System.out.println("gender = "+rs.getString("gender"));
System.out.println("age = "+rs.getString("age"));
System.out.println("addr = "+rs.getString("addr"));
System.out.println("*******************************");
}
System.out.println("数据库中共有记录 "+n+" 条");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值