spring jdbc框架

spring+jdbc

1jdbc编程的特点:

     模板编程

          固定代码+动态的参数

spring产生dataSource

 

JdbcTemplate{//模板编程

     private DataSource dataSource;

      public void setDataSource(DataSource dataSource){

        this.dataSource = dataSource;

     }

     public void update(String sql){

           //产生链接

           //产生Statement

           //执行executeUpdate方法

     }

使用spring与JDBC连接的方式

导包

1、让自己写的一个dao类继承JdbcDaoSupport

2、让自己写的一个dao类继承JdbcTemplate

3、让自己写的一个dao类里有一个属性为JdbcTemplate

 

总结:

   1、引入dataSource的方式:

        1、在dataSource的设置中直接写值

        2、引入properties文件

   2、在dao的写法中有很多种,最终只需要把dataSource注入到jdbcTemplate

 

拿update当例子

PersonDao.java

 1 package cn.itcast.spring.jdbc;
 2 
 3 import org.springframework.jdbc.core.support.JdbcDaoSupport;
 4 
 5 //JdbcDaoSupport的有setDataSource方法可以注入 DataSource
 6 public class PersonDao extends JdbcDaoSupport{
 7     public void update()
 8     {
 9         System.out.println("update operation 让自己写的一个dao类继承JdbcDaoSupport" );
10         this.getJdbcTemplate().update("update person set pname='aa' where pid=1");
11     }
12 }

PersonDao2.java

 1 package cn.itcast.spring.jdbc;
 2 
 3 import javax.sql.DataSource;
 4 
 5 import org.springframework.jdbc.core.JdbcTemplate;
 6 import org.springframework.jdbc.core.support.JdbcDaoSupport;
 7 
 8 
 9 public class PersonDao2 extends JdbcTemplate{
10     //JdbcTemplate的父类有setDataSource方法可以注入 DataSource
11     //自身有构造方法 注入DataSource  
12     //配置文件两种方法都可以
13     public PersonDao2(DataSource ds) {
14         super(ds);
15     }
16     public void update()
17     {
18         System.out.println("update operation 让自己写的一个dao类继承JdbcTemplate" );
19         this.update("update person set pname='aa' where pid=2");
20     }
21 }

PersonDao3.java

 1 package cn.itcast.spring.jdbc;
 2 
 3 import javax.sql.DataSource;
 4 
 5 import org.springframework.jdbc.core.JdbcTemplate;
 6 import org.springframework.jdbc.core.support.JdbcDaoSupport;
 7 
 8 //3、让自己写的一个dao类里有一个属性为JdbcTemplate
 9 //先让数据源 注入到JdbcTemplate然后 组合 用
10 //可以通过 构造方法 或者 注册依赖
11 public class PersonDao3  {
12     //属性名 在配置文件中不能写错
13     private JdbcTemplate jdbcTemplate;
14 
15     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
16         this.jdbcTemplate = jdbcTemplate;
17     }
18 
19 //    public JdbcTemplate getJdbcTemplate() {
20 //        return jdbcTemplate;
21 //    }
22 
23     public void update()
24     {
25         System.out.println("update operation 让自己写的一个dao类里有一个属性为JdbcTemplate" );
26         this.jdbcTemplate.update("update person set pname='aa' where pid=3");
27     }
28 }

applicationContext-spring_jdbc.xml

重点配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 6     <bean
 7         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 8         <property name="locations">
 9             <value>classpath:jdbc.properties</value>
10         </property>
11     </bean>
12 
13 
14     <bean id="dataSource" destroy-method="close"
15         class="org.apache.commons.dbcp.BasicDataSource">
16         <property name="driverClassName" value="${jdbc.driverClassName}" />
17         <property name="url" value="${jdbc.url}" />
18         <property name="username" value="${jdbc.username}" />
19         <property name="password" value="${jdbc.password}" />
20     </bean>
21 <!--     第一种方式 -->
22     <bean id="personDao" class="cn.itcast.spring.jdbc.PersonDao">
23         <property name="dataSource">
24             <ref bean="dataSource"/>
25         </property>
26     </bean>
27     
28     <!--     第二种方式 -->
29     <bean id="personDao2" class="cn.itcast.spring.jdbc.PersonDao2">
30         <constructor-arg index="0" ref="dataSource"></constructor-arg>
31     </bean>
32     <!--     第三种方式 -->
33     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
34         <property name="dataSource">
35             <ref bean="dataSource"/>
36         </property>
37     </bean>
38     
39     <bean id="personDao3" class="cn.itcast.spring.jdbc.PersonDao3">
40         <property name="jdbcTemplate">
41             <ref bean="jdbcTemplate"/>
42         </property>
43     </bean>
44 </beans>

jdbc.properties  描述数据库配置信息

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/hibernate_basic
jdbc.username=root
jdbc.password=friends

测试

 1 package cn.itcast.spring.jdbc;
 2 
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 public class test {
 8     //1、让自己写的一个dao类继承JdbcDaoSupport
 9     @Test
10     public void testPersonDao1()
11     {
12         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-spring_jdbc.xml");
13         PersonDao dao=(PersonDao) context.getBean("personDao");
14         dao.update();
15     }
16     //2、让自己写的一个dao类继承JdbcTemplate
17     
18     //要向子类中注入构造函数 否则 报错 找不到指定的构造函数
19     @Test
20     public void testPersonDao2()
21     {
22         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-spring_jdbc.xml");
23         
24         PersonDao2 dao=(PersonDao2) context.getBean("personDao2");
25         dao.update();
26     }
27     //3、让自己写的一个dao类里有一个属性为JdbcTemplate
28     @Test
29     public void testPersonDao3()
30     {
31         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-spring_jdbc.xml");
32         
33         PersonDao3 dao=(PersonDao3) context.getBean("personDao3");
34         dao.update();
35     }
36 }

 

posted on 2014-06-13 10:38  wf110  阅读(626)  评论(0编辑  收藏  举报