文档章节

Spring + JdbcTemplate + JdbcDaoSupport

山海经
 山海经
发布于 2014/06/22 22:13
字数 508
阅读 1805
收藏 0
点赞 0
评论 0

首先,数据库是这样的,很简单。

当然,要引入spring的包,这里我全部导入了,省事。

applicationContext.xml是这样的:

[html] view plain copy 派生到我的代码片
  1. < span>xmlversion="1.0"encoding="UTF-8"?<
  2. < span>beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="  
  5.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"<
  6. < span>beanid="test"class="jdbc.Test"<
  7. < span>propertyname="dataSource"ref="dataSource"<</>property<
  8. </>bean<
  9. < span>beanid="dataSource"
  10. class="org.springframework.jdbc.datasource.DriverManagerDataSource"<
  11. < span>propertyname="driverClassName"value="com.mysql.jdbc.Driver"/<
  12. < span>propertyname="url"value="jdbc:mysql://localhost:3306/testspring"/<
  13. < span>propertyname="username"value="root"/<
  14. < span>propertyname="password"value=""/<
  15. </>bean<
  16. </>beans<

User.java是这样的:

[java] view plain copy 派生到我的代码片
  1. package jdbc;  
  2. publicclass User {  
  3. privateint id;  
  4. private String name;  
  5. private String password;  
  6. publicint getId() {  
  7. return id;  
  8.     }  
  9. publicvoid setId(int id) {  
  10. this.id = id;  
  11.     }  
  12. public String getName() {  
  13. return name;  
  14.     }  
  15. publicvoid setName(String name) {  
  16. this.name = name;  
  17.     }  
  18. public String getPassword() {  
  19. return password;  
  20.     }  
  21. publicvoid setPassword(String password) {  
  22. this.password = password;  
  23.     }  
  24. }  
下面来对比一下三种写法:

1、spring

[java] view plain copy 派生到我的代码片
  1. package jdbc;  
  2. import java.sql.Connection;  
  3. import java.sql.PreparedStatement;  
  4. import java.sql.SQLException;  
  5. import javax.sql.DataSource;  
  6. import org.springframework.context.ApplicationContext;  
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  8. publicclass Test {  
  9. private DataSource dataSource;  
  10. publicvoid setDataSource(DataSource dataSource) {  
  11. this.dataSource = dataSource;  
  12.     }  
  13. publicvoid insert(User u) {  
  14.         String sql = "insert into _user " + "values(null, ?, ?)";//普通的sql语句
  15.         Connection conn = null;  
  16. try {  
  17.             conn = dataSource.getConnection();  
  18.             PreparedStatement ps = conn.prepareStatement(sql);  
  19.             ps.setString(1, u.getName());  
  20.             ps.setString(2, u.getPassword());  
  21.             ps.executeUpdate();  
  22.             ps.close();  
  23.         } catch (SQLException e) {  
  24. thrownew RuntimeException(e);  
  25.         } finally {  
  26. if (conn != null) {  
  27. try {  
  28.                     conn.close();  
  29.                 } catch (SQLException e) {  
  30.                 }  
  31.             }  
  32.         }  
  33.     }  
  34. publicstaticvoid main(String[] args) {  
  35.         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  36. "applicationContext.xml");  
  37.         Test t = (Test) ctx.getBean("test");  
  38.         User u = new User();  
  39.         u.setName("dd");  
  40.         u.setPassword("dd");  
  41.         t.insert(u);  
  42.     }  
  43. }  
运行结果是这样的:


2、JdbcTemplate 

[java] view plain copy 派生到我的代码片
  1. package jdbc;  
  2. import java.sql.Connection;  
  3. import java.sql.PreparedStatement;  
  4. import java.sql.SQLException;  
  5. import javax.sql.DataSource;  
  6. import org.springframework.context.ApplicationContext;  
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  8. import org.springframework.jdbc.core.JdbcTemplate;  
  9. publicclass Test {  
  10. private DataSource dataSource;  
  11. publicvoid setDataSource(DataSource dataSource) {  
  12. this.dataSource = dataSource;  
  13.     }  
  14. publicvoid insert(User u) {  
  15.         String sql = "insert into _user " + "values(null, ?, ?)";//普通的sql语句
  16.         JdbcTemplate template = new JdbcTemplate(dataSource);  
  17.         template.update(sql, new Object[]{u.getName(), u.getPassword()});  
  18.     }  
  19. publicstaticvoid main(String[] args) {  
  20.         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  21. "applicationContext.xml");  
  22.         Test t = (Test) ctx.getBean("test");  
  23.         User u = new User();  
  24.         u.setName("dd");  
  25.         u.setPassword("dd");  
  26.         t.insert(u);  
  27.     }  
  28. }  
可以看得出简单了很多,不用Connection了。

3、JdbcDaoSupport

这个更简单,不用new JdbcTemplate了。

[java] view plain copy 派生到我的代码片
  1. package jdbc;  
  2. import org.springframework.context.ApplicationContext;  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  5. publicclass Test extends JdbcDaoSupport {  
  6. //JdbcDaoSupport类已经有了public final void setDataSource(DataSource dataSource)了
  7. //不用重写也不能重写
  8. publicvoid insert(User u) {  
  9.         String sql = "insert into _user " + "values(null, ?, ?)";//普通的sql语句
  10. this.getJdbcTemplate().update(sql, new Object[]{u.getName(), u.getPassword()});  
  11.     }  
  12. publicstaticvoid main(String[] args) {  
  13.         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
  14. "applicationContext.xml");  
  15.         Test t = (Test) ctx.getBean("test");  
  16.         User u = new User();  
  17.         u.setName("dd");  
  18.         u.setPassword("dd");  
  19.         t.insert(u);  
  20.     }  
  21. }  
三种方法哪一种更简单一目了然。

我参考的文章:Spring + JdbcTemplate + JdbcDaoSupport Examples

本文转载自:

共有 人打赏支持
山海经
粉丝 32
博文 159
码字总数 40723
作品 0
广州
程序员
Spring jdbc 以及事务管理

一,Springjdbc的一些常用类 spring与jdbc.png 这里有两个常用的类jdbcDaoSupport和jdbcTemplate 1,jdbcDaoSupport提供了jdbcTemplate和DataSource的setter方法,可以通过它们获取到jdbcTem...

遗忘的大志若愚 ⋅ 2017/11/20 ⋅ 0

spring ORM管理

一、Spring JDBC 概述 Spring 提供了一个强有力的模板类JdbcTemplate简化JDBC操作,DataSource,JdbcTemplate都可以以Bean的方式定义在想xml配置文件,JdbcTemplate创建只需注入一个DataSourc...

masanpaossa ⋅ 2015/11/24 ⋅ 0

Spring入门到精通Spring访问数据库

Spring在数据访问方面提供了模板化和Dao支持类的提供,方便操作数据库。 一、Spring JDBC (详细配置:http://my.oschina.net/wangning0535/blog/535590?fromerr=MIriquMm) 1、配置数据源 Da...

Winnie007 ⋅ 2015/10/20 ⋅ 0

spring-boot 与 JdbcDaoSupport 的问题!

我使用spring-boot来构建系统, 持久层的接口: public interface JobsDao extends CrudRepository 这样是没问题,但是我想利用spring的JdbcDaoSupport来自己写SQL做一些复杂的查询语句 然后...

hosihui ⋅ 2016/05/08 ⋅ 4

Spring框架笔记(二十四)——Spring中的JDBC的两种使用方式

为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. 作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法...

HappyBKs ⋅ 2015/08/26 ⋅ 0

Spring 对JDBC操作的支持

在用JDBC进行数据库的操作的时候会在每个DAO中写有很多重复和类似的代码(建立连接,关闭连接等等),Spring的JDBC框架对这些重复的操作做了提取,形成了模板,使用Spring的JDBC框架的开发者通过提...

晨曦之光 ⋅ 2012/04/25 ⋅ 0

spring jdbctemplate nullpointerexception

dao经junit测试没问题, 但在dao1调用dao2时,出现空指针异常。 描述一下情况: diray类中有个type属性,这个type是个类, 我在dao方法中在加载diray类时同时加载type类, diray.setType(ne...

LiShixi ⋅ 2011/07/08 ⋅ 0

jdbctemplate之BeanPropertyRowMapper

今天看SpringAPI的时候无意中发现了Spring2.5新增了一个RowMapper的实现类org.springframework.jdbc.core.BeanPropertyRowMapper,但是貌似Spring的refrence里面根本就没提及到。Google了一下...

Mr&Cheng ⋅ 2013/01/20 ⋅ 0

Spring笔记8---数据库持久化

聊聊持久化。 ------------------------Spring的平台无关持久化异常 下面是Spring提供的数据访问模板,分别适用于不同的持久化机制 模板类org.springframework.* 用途 jca.cci.core.CciTemp...

强子哥哥 ⋅ 2015/01/12 ⋅ 0

加急贴! spring JDBCtemplete spring容器无法创建对象!希望大家帮帮我...

问题 : 使用spring JDBCtemplete 进行数据库操作 不在web 环境下运行 使用单元测试 都没有问题,完全可以? 但是到web 环境 spring就不能创建对象了 问题应该在jdbcTemplete 无法创建对象 ...

share_xbzx ⋅ 2011/05/06 ⋅ 9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 28分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部