zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    [LeetCode] Best Time to Buy and Sell Stock with Transaction Fee 买股票的最佳时间含交易费
    Visual Studio Many Projects in One Solution VS中多工程开发
    [LeetCode] 713. Subarray Product Less Than K 子数组乘积小于K
    [LeetCode] Minimum ASCII Delete Sum for Two Strings 两个字符串的最小ASCII删除和
    [LeetCode] Erect the Fence 竖立栅栏
    3D Slicer Reconstruct CT/MRI
    [LeetCode] Partition to K Equal Sum Subsets 分割K个等和的子集
    [LeetCode] Degree of an Array 数组的度
    [LeetCode] Count Binary Substrings 统计二进制子字符串
    [LeetCode] Max Area of Island 岛的最大面积
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3785370.html
Copyright © 2011-2022 走看看