首页 > 代码库 > spring jdbc框架

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方法可以注入 DataSource11     //自身有构造方法 注入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.Driverjdbc.url=jdbc\:mysql\://localhost\:3306/hibernate_basicjdbc.username=rootjdbc.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     @Test10     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类继承JdbcTemplate17     18     //要向子类中注入构造函数 否则 报错 找不到指定的构造函数19     @Test20     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类里有一个属性为JdbcTemplate28     @Test29     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 }