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. CSS 笔记——定位尺寸

    3. 定位尺寸 -> 尺寸 (1)height 基本语法 height : auto | length 语法取值 auto : 默认值.无特殊定位,根据HTML定位规则分配 length : 由 ...

  2. 初见Python<7>:Python操作mysql

    1.基本介绍: python标准数据库接口为python DB-API,它为开发人员提供了数据库应用编程接口,可以支持mysql.Oracle.MSSQL.Sybase等多种数据库,不同的数据库需要下 ...

  3. BZOJ 1150 [CTSC2007]数据备份Backup(贪心+优先队列)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1150 [题目大意] 给出n个数,请你挑出k对(每个数不可重复选取),使得他们差的绝对值 ...

  4. [SRM478]RandomApple

    题意:有$k$种苹果和$n$个箱子,每个箱子中有一些苹果,先等概率选取$n$个箱子组成集合的非空子集,再从选出的苹果中随机选一个,问每种苹果被选中的概率是多少 设箱子$i$有$cnt_{i,j}$个第 ...

  5. 【Java】【高精度】【递推】UVA - 11375 - Matches

    d[i+c[j]]+=d[i](c[j]是拼成j所需的火柴数) d[0]=1: 别忘了不能有前导零,所以当i为零时,不要尝试去拼成零.反而应该在n>=6时,最后给答案加1(单独拼出0). imp ...

  6. 【BFS】bzoj2252 [2010Beijing wc]矩阵距离

    要注意一开始将所有为'1'的点入队,然后通过一次BFS去更新所有点的距离,直到无法更新为止. #include<cstdio> #include<queue> #include ...

  7. js流程控制与函数

    流程控制 1.条件语句 分支结构 单向分支 if (条件表达式){ code... } 双向分支 if (条件表达式){ code... }else{ code... } 多向分支 if (条件表达式 ...

  8. xml和集合混合使用-图书管理器

    package com.book; public class Book { private int id; //图书编号 private String name; //图书名称 private Str ...

  9. Problem F: 尖兵

    #include<stdio.h> struct man{ ]; int grade; }; int main(void) { int t; int i,j,n; ],max; scanf ...

  10. Problem C: 零起点学算法82——数组中查找数

    #include<stdio.h> int main(void) { ],m; while(scanf("%d",&n)!=EOF) { ;i<n;i++ ...