文档章节

Spring + JdbcTemplate + JdbcDaoSupport

山海经
 山海经
发布于 2014/06/22 22:13
字数 508
阅读 1810
收藏 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

本文转载自:

共有 人打赏支持
山海经
粉丝 33
博文 159
码字总数 40723
作品 0
广州
程序员
私信 提问
spring-boot 与 JdbcDaoSupport 的问题!

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

hosihui
2016/05/08
594
4
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

没有更多内容

加载失败,请刷新页面

加载更多

CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
3
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
4
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部