spring+jdbc

1、jdbc编程的特点:

模板编程

固定代码+动态的参数

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

 package cn.itcast.spring.jdbc;

 import org.springframework.jdbc.core.support.JdbcDaoSupport;

 //JdbcDaoSupport的有setDataSource方法可以注入 DataSource
public class PersonDao extends JdbcDaoSupport{
public void update()
{
System.out.println("update operation 让自己写的一个dao类继承JdbcDaoSupport" );
this.getJdbcTemplate().update("update person set pname='aa' where pid=1");
}
}

PersonDao2.java

 package cn.itcast.spring.jdbc;

 import javax.sql.DataSource;

 import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport; public class PersonDao2 extends JdbcTemplate{
//JdbcTemplate的父类有setDataSource方法可以注入 DataSource
//自身有构造方法 注入DataSource
//配置文件两种方法都可以
public PersonDao2(DataSource ds) {
super(ds);
}
public void update()
{
System.out.println("update operation 让自己写的一个dao类继承JdbcTemplate" );
this.update("update person set pname='aa' where pid=2");
}
}

PersonDao3.java

 package cn.itcast.spring.jdbc;

 import javax.sql.DataSource;

 import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport; //3、让自己写的一个dao类里有一个属性为JdbcTemplate
//先让数据源 注入到JdbcTemplate然后 组合 用
//可以通过 构造方法 或者 注册依赖
public class PersonDao3 {
//属性名 在配置文件中不能写错
private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} // public JdbcTemplate getJdbcTemplate() {
// return jdbcTemplate;
// } public void update()
{
System.out.println("update operation 让自己写的一个dao类里有一个属性为JdbcTemplate" );
this.jdbcTemplate.update("update person set pname='aa' where pid=3");
}
}

applicationContext-spring_jdbc.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/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean> <bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 第一种方式 -->
<bean id="personDao" class="cn.itcast.spring.jdbc.PersonDao">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean> <!-- 第二种方式 -->
<bean id="personDao2" class="cn.itcast.spring.jdbc.PersonDao2">
<constructor-arg index="0" ref="dataSource"></constructor-arg>
</bean>
<!-- 第三种方式 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean> <bean id="personDao3" class="cn.itcast.spring.jdbc.PersonDao3">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
</bean>
</beans>

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

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

测试

 package cn.itcast.spring.jdbc;

 import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class test {
//1、让自己写的一个dao类继承JdbcDaoSupport
@Test
public void testPersonDao1()
{
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-spring_jdbc.xml");
PersonDao dao=(PersonDao) context.getBean("personDao");
dao.update();
}
//2、让自己写的一个dao类继承JdbcTemplate //要向子类中注入构造函数 否则 报错 找不到指定的构造函数
@Test
public void testPersonDao2()
{
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-spring_jdbc.xml"); PersonDao2 dao=(PersonDao2) context.getBean("personDao2");
dao.update();
}
//3、让自己写的一个dao类里有一个属性为JdbcTemplate
@Test
public void testPersonDao3()
{
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-spring_jdbc.xml"); PersonDao3 dao=(PersonDao3) context.getBean("personDao3");
dao.update();
}
}

spring jdbc框架的更多相关文章

  1. Spring Jdbc 框架整合的第一天

    Spring  Jdbc的概述 它是Spring框架的持久层子框架.用于对数据库的操作 什么是数据库的操作? 答:对数据库的增删改查 在使用Spring  Jdbc框架,要用到一个类---->J ...

  2. ref:Spring JDBC框架

    ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...

  3. 11.Spring——JDBC框架

    1.DBC 框架概述 2.Spring JDBC 示例 3.Spring 中 SQL 的存储过程 1.DBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关 ...

  4. Spring JDBC 框架使用JdbcTemplate 类的一个实例

    JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...

  5. Spring JDBC 框架 简介

    在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等. 但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常 ...

  6. Spring(十二)之JDBC框架

    JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...

  7. jdbc框架有很多,包括spring jdbc

    1.由于jdbc连接的繁琐性,故很多公司封装了jdbc框架,比如spring jdbc 2.比如spring jdbc框架中,用jdbctemplate, 通过jdbcTemplate 提供 int ...

  8. Spring的JDBC框架概述

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/jdbc-framework.html: 在使用普通的JDBC操作数据库时,就会很麻烦的写很多不必要 ...

  9. 开涛spring3(7.5) - 对JDBC的支持 之 7.5 集成Spring JDBC及最佳实践

    7.5 集成Spring JDBC及最佳实践 大多数情况下Spring JDBC都是与IOC容器一起使用.通过配置方式使用Spring JDBC. 而且大部分时间都是使用JdbcTemplate类(或 ...

随机推荐

  1. 「LGR-049」洛谷7月月赛 D.Beautiful Pair

    「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max ...

  2. POJ 3378 Crazy Thairs(树状数组+DP)

    [题目链接] http://poj.org/problem?id=3378 [题目大意] 给出一个序列,求序列中长度等于5的LIS数量. [题解] 我们发现对于每个数长度为k的LIS有dp[k][i] ...

  3. 【找规律】【DFS】Gym - 101174H - Pascal's Hyper-Pyramids

    二维下,如果把杨辉三角按照题目里要求的那样摆放,容易发现,第i行第j列的数(从0开始标号)是C(i+j,i)*C(j,j). 高维下也有类似规律,比如三维下,最后一层的数其实是C(i+j+k,i)*C ...

  4. 【数论】nefu118 n!后面有多少个0

    就是求n!有多少个因子2和因子5,并在这两者中取较小者.因为必须要一个2和一个5才能拼出1个10. 显然2的数量多于5,因此只需要求n!有多少个因子5即可. n!中素因子p的个数= [n/p]+[n/ ...

  5. 数据库之mysql的基本操作

    1 数据库 1.1 数据库介绍 为什么要有数据库? 数据需要大量的存储,把数据永久保存下来,可以保存到文件中,当然也可以保存到数据库中. 数据库:通俗的说,存储数据的仓库,是管理数据的文件夹:存放数据 ...

  6. [bzoj1014](JSOI2008)火星人 prefix (Splay维护哈希)

    Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀. 比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 ...

  7. [百度之星2014资格赛] Disk Schedule 报告

    Disk Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  8. 如何获取php错误

    今天把项目放在测试服务器,但是出现一个问题,用的TP5框架,我把入口文件放在了根目录,访问的时候报错了,框架引导文件引入不了,也不报错,就是说访问不了. 所以就用了一段代码把错误获取出来了,代码如下: ...

  9. GCC 内联汇编(GCC内嵌ARM汇编规则)

    转:http://smileleeboo.howbbs.com/posts/list/3127/81062.html 更多文档参见:http://pan.baidu.com/s/1eQ7nd8Q 有时 ...

  10. loadrunner的Analysis怎么生成word、ppt、html形式报告

    原文:http://jingyan.baidu.com/article/03b2f78c1936d25ea237ae0f.html 在进行使用loadrunner中进行压力测试之后就会在Analysi ...