使用Spring提供的三個JDBC模板類(JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate)操作數據庫
一、JdbcTemplate是Spring中最基本的JDBC模板, 利用JDBC和簡單的索引參數查詢對數據庫進行簡單訪問
二、NamedParameterJdbcTemplate能夠在查詢的時候把值綁定到SQL裡的命名參數,而不是索引參數
NamedParameterJdbcTemplate內部包含了一個JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干;
NamedParameterJdbcTemplate相對於JdbcTemplate主要增加了參數可以命名的功能。
三、SimpleJdbcTemplate利用Java5的特性,比如自動裝箱、通用和可變參數列表來簡化JDBC模板的使用
SimpleJdbcTemplate內部包含了一個NamedParameterJdbcTemplate;所以NamedParameterJdbcTemplate能做的事情SimpleJdbcTemplate都能干,
SimpleJdbcTemplate相對於NamedParameterJdbcTemplate主要增加了JDK5.0的泛型和可變長度參數支持。
1、使用JDBC Template
JdbcTemplate是一個輔助類,封裝了JDBC的操作,直接使用JdbcTemplate很簡單~Template只依賴於數據源。
本例子使用的DriverManagerDataSource,是一個“偽”數據源,只是模擬了形式,並沒事實現數據源的功能。
DriverManagerDataSource ds = new DriverManagerDataSource(); ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql://localhost:3306/sampledb"); ds.setUsername("root"); ds.setPassword(""); JdbcTemplate jdbc = new JdbcTemplate(); jdbc.setDataSource(ds); String sql = "create table t_user1(user_id int primary key,user_name varchar(60))"; jdbc.execute(sql);
2、JdbcDaoSupport,&& 讓Spring JDBC更“Spring”
如果在代碼中反復聲明JdbcTemplate,代碼會被污染的很嚴重,那和JDBC沒區別了就~
所以Spring提供了JdbcDaoSupport,所有DAO繼承這個類,就會自動獲得JdbcTemplate(前提是注入DataSource)。
另外:Spring的xml配置可以很好的用在這裡,在xml中配置,基本流程如下:
(1)聲明DataSrouce的Bean,這裡用BasicDataSource,就是DBCP數據源(Tomcat用的那個)
(2)聲明模板JdbcTemplate的Bean,並把DataSource注入之
(3)聲明Dao,class為集成自JdbcDaoSupport的東西,並注入JdbcTemplate。
上述Bean生成過程可以用Spring IDE……相當的方便。別的不說了,Code。
applicationContext.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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" abstract="false" lazy-init="default" autowire="default" dependency-check="default" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/sampledb</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <null /> </property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <bean id="Dao" abstract="true"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate" /> </property> </bean> <bean id="forumDAO" class="dao.jdbc.ForumDAO" parent="jdbcTemplate" abstract="false" lazy-init="default" autowire="default" dependency-check="default"> </bean></beans> ForumDAO package dao.jdbc; import org.springframework.jdbc.core.support.JdbcDaoSupport; public class ForumDAO extends JdbcDaoSupport { public void initDb() { String sql = "create table t_user1(user_id int primary key,user_name varchar(60))"; getJdbcTemplate().execute(sql); } } Main import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; public class Main { public static void main(String args[]) { DriverManagerDataSource ds = new DriverManagerDataSource(); ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql://localhost:3306/sampledb"); ds.setUsername("root"); ds.setPassword(""); JdbcTemplate jdbc = new JdbcTemplate(); jdbc.setDataSource(ds); String sql = "create table t_user1(user_id int primary key,user_name varchar(60))"; jdbc.execute(sql); } }
作者:csdn博客 跬步小流