简单介绍Spring JDBC模板

开发 后端
本文将介绍Spring JDBC模板,Spring所提供的JDBC抽象框架由四个不同的包组成,希望本文对大家有所帮助。

Spring所提供的JDBC抽象框架由四个不同的包组成:

◆核心包包含JdbcTemplate。这个类是一个基础类之一-由Spring框架的JDBC支持提供并使用。

◆数据源包是实现单元测试数据库存取代码的重要的一部分。它的DriverManagerDataSource能够以一种类似于你已经习惯于JDBC中的用法:只要创建一个新的DriverManagerDataSource并且调用setter方法来设置DriverClassName,Url,Username和Password。

◆对象包中包含类,用于描述RDBMS查询、更改和存储过程为线程安全的、可重用的对象。

◆支持包-你可以从这里找到SQLException翻译功能和一些工具类。

1)Spring JDBC模板设计模式

Spring JDBC实现模板设计模式,这意味着,代码中的重复的复杂的任务部分是在模板类中实现的。这种方式简化了JDBC的使用,因为由它来处理资源的创建和释放。这有助于避免普通错误,例如忘记关闭连接等。它执行核心JDBC工作流任务,如语句创建和执行,而让应用程序代码来提供SQL并且提取结果。

2)Spring JDBC异常处理

Spring框架特别强调在传统型JDBC编程中所面临的与下列方案有关的问题:

◆Spring提供一个抽象异常层,把冗长并且易出错误的异常处理从应用程序代码移到由框架来实现。框架负责所有的异常处理;应用程序代码则能够专注于使用适当的SQL提取结果。

◆Spring提供了一个重要的异常类层次,以便于你的应用程序代码中可以使用恰当的SQLException子类。

借助于一个抽象异常层,我们成功地实现了数据库独立性而不必改变异常处理。例如,如果你把你的数据库从PostgreSQL改变为Oracle,那么你不必把异常处理从OracleDataException改变到PostgresDataException。Spring能够捕获应用程序服务器特定的异常并抛出一个Spring数据异常。

当处理异常时,Spring检查来自一个数据库连接的元数据可用性以决定数据库产品。它使用这种知识来把SQLException映射到其自己异常层次中的具体的异常上。因此,我们不需要担心专门性的SQL状态或错误代码问题;Spring的数据存取异常不是JDBC特定的,因此你的DAO不必绑定到JDBC(由于其可能抛出的异常)。

四.Spring JDBC模板示例

在下面两个列表中,我们将使用前面用传统型JDBC实现的业务逻辑为例并且展示使用Spring JDBC版本是多么容易。首先,我们从一个简单的接口开始。

接口:

  1. importjava.util.List;  
  2. publicinterfaceTasksDAO{  
  3. publicListgetTasksNames();  

接口实现类:

  1. importjava.sql.ResultSet;  
  2. importjava.sql.SQLException;  
  3. importjava.util.Iterator;  
  4. importjava.util.List;  
  5. importjavax.sql.DataSource;  
  6. importorg.springframework.context.ApplicationContext;  
  7. importorg.springframework.context.support.ClassPathXmlApplicationContext;  
  8. importorg.springframework.jdbc.core.JdbcTemplate;  
  9. importorg.springframework.jdbc.core.RowMapper;  
  10. importorg.springframework.jdbc.core.support.JdbcDaoSupport;  
  11. /**  
  12. *wangzyspringjdbcTemplate  
  13. *@authorAdministrator  
  14. *  
  15. */  
  16.  
  17. publicclassTasksJdbcDAOextendsJdbcDaoSupportimplementsTasksDAO  
  18. {  
  19.  
  20. publicListgetTasksNames(){  
  21.  
  22. JdbcTemplatejt=getJdbcTemplate();//获取Spring JDBC模板  
  23. returnjt.query("selectUSERNAME,PASSWORDfromuserinfo",newTasksRowMapper());  
  24. }  
  25. //继承了sping,封装好的接口RowMapper  
  26. classTasksRowMapperimplementsRowMapper{  
  27. publicObjectmapRow(ResultSetrs,intindex)throwsSQLException{  
  28. returnrs.getString(1);}//获取列数  
  29. }  
  30. publicstaticvoidmain(String[]args)throwsException{  
  31. ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml");//获取sping配置文件地址  
  32. DataSourceds=(DataSource)ctx.getBean("dataSourceDBDirect");//获取数据源  
  33. TasksJdbcDAOtaskDao=newTasksJdbcDAO();  
  34.  
  35. taskDao.setDataSource(ds);  
  36. IteratortskIter=taskDao.getTasksNames().iterator();//提取数据,循环遍历  
  37. while(tskIter.hasNext()){  
  38. System.out.println(tskIter.next().toString());  
  39. }  
  40. }  

appliactiong:(src下)

  1. <beanidbeanid="dataSourceDBDirect"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
  2. <propertynamepropertyname="driverClassName"value="com.mysql.jdbc.Driver">property> 
  3. <propertynamepropertyname="url"value="jdbc:mysql://localhost:3306/userinfo">property> 
  4. <propertynamepropertyname="username"value="root">property> 
  5. <propertynamepropertyname="password"value="root">property> 
  6. bean> 

【编辑推荐】

  1. 谈谈优化JDBC数据库编程
  2. 实例说明对MySQL的JDBC连接设置
  3. 浅谈如何利用JSP网页中JDBC代码连接MySQL
  4. 浅谈JDBC代码如何重复使用
  5. 如何进行Jython数据库插入(JDBC)
责任编辑:彭凡 来源: CSDN
相关推荐

2009-06-17 17:59:01

介绍Spring

2009-06-18 10:27:42

Spring Time

2009-06-18 13:18:04

Spring IDE

2009-06-30 16:57:42

Spring事务管理

2009-07-17 13:54:51

JDBC存储过程

2009-06-19 13:37:53

Spring JDBC

2011-01-21 10:40:52

Sendmail

2011-02-23 13:28:12

2011-02-24 14:40:47

Proftpd

2011-01-21 16:49:15

Zimbra

2011-04-01 09:39:17

zabbix

2011-02-22 16:38:03

Konqueror

2011-01-21 18:08:22

Qmail

2011-03-04 13:19:09

VSFTP介绍

2011-03-29 09:14:37

2009-06-18 15:14:53

Spring osgi

2011-07-22 17:22:20

Spring

2009-12-23 18:06:25

WPF模板

2010-06-12 14:44:54

BGP协议

2009-07-15 10:37:28

Swing外观
点赞
收藏

51CTO技术栈公众号