文档章节

Spring + JdbcTemplate + JdbcDaoSupport

山海经
 山海经
发布于 2014/06/22 22:13
字数 508
阅读 1807
收藏 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框架笔记(二十四)——Spring中的JDBC的两种使用方式

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

HappyBKs
2015/08/26
0
0
Spring jdbc 以及事务管理

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

遗忘的大志若愚
2017/11/20
0
0
spring ORM管理

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

masanpaossa
2015/11/24
129
0
spring jdbctemplate nullpointerexception

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

LiShixi
2011/07/08
0
0
Spring入门到精通Spring访问数据库

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

Winnie007
2015/10/20
138
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部