程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 如何使用spring整合JDBC

如何使用spring整合JDBC

編輯:關於JAVA

使用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博客 跬步小流

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved