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. xtuoj 1235 CQRXLB(博弈论)

    CQRXLB Accepted : 19   Submit : 40 Time Limit : 1000 MS   Memory Limit : 65536 KB CQRXLB Problem Des ...

  2. CodeForces - 524F And Yet Another Bracket Sequence

    题面在这里! (会考完之后休闲休闲2333) 可以发现,如果把一个串中"()"自动删除,最后剩的一定是形如"))))....))(((..((("这样的串,然后 ...

  3. 【最短路】NOIP模拟赛 虫洞

    虫洞 [题目描述] N个虫洞,M条单向跃迁路径.从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间.虫洞有白洞和黑洞之分.设一条跃迁路径两端的虫洞质量差为delta. 1. 从白洞跃迁到 ...

  4. BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3399 [题目大意] 将一个集合调整成另一个集合中的数,把一个数+1需要消耗x,-1需要 ...

  5. BZOJ 1116 [POI2008]CLO(并查集)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1116 [题目大意] Byteotia城市有n个towns,m条双向roads.每条ro ...

  6. 【暴力】hdu6121 Build a tree

    给你n,K,让你构造出一颗n个结点的完全K叉树,求所有结点子树大小的异或和. 先把n号结点到根的路径提取出来单独计算.然后这条路径把每一层分成了左右两部分,每一层的左侧和其上一层的右侧的结点的子树大小 ...

  7. [转]Spring Security学习总结一

    [总结-含源码]Spring Security学习总结一(补命名空间配置) Posted on 2008-08-20 10:25 tangtb 阅读(43111) 评论(27)  编辑  收藏 所属分 ...

  8. python获取函数名

    Date: 20140223Auth: Jin 参考: http://hi.baidu.com/greysign/item/d11919d325c4c2e6b2f777bf 获取函数名python中获 ...

  9. [移动应用安全]移动应用安全培训PPT

    这是年初给公司做的移动应用安全培训,主要是针对开发的兄弟们,让大家对目前的移动领域的安全形势有个了解,以及不正确的开发所带来的危害,另外还配了个详细的word版的移动应用开发指南,后面一起附上:).

  10. Eclipse使用maven创建struct2项目及遇到的各种坑

    参考创建教程:http://www.jb51.net/article/45138.htm   坑一: Eclipse创建maven项目报错:Could not resolve archetype or ...