读书人

Spring 守旧JDBC编程替代方案

发布时间: 2012-07-29 15:26:14 作者: rapoo

Spring 传统JDBC编程替代方案

前边我们已经使用过传统JDBC编程方式,接下来让我们看下Spring JDBC框架提供的更好的解决方案。

1)准备需要的jar包并添加到类路径中:

java代码:Java代码 Spring 守旧JDBC编程替代方案
  1. //JDBC抽象框架模块
  2. org.springframework.jdbc-3.0.5.RELEASE.jar
  3. //Spring事务管理及一致的DAO访问及非检查异常模块
  4. org.springframework.transaction-3.0.5.RELEASE.jar
  5. //hsqldb驱动,hsqldb是一个开源的Java实现数据库,请下载hsqldb2.0.0+版本
  6. hsqldb.jar

2)传统JDBC编程替代方案:

在使用JdbcTemplate模板类时必须通过DataSource获取数据库连接,Spring JDBC提供了DriverManagerDataSource实现,它通过包装“DriverManager.getConnection”获取数据库连接,具体DataSource相关请参考【7.5.1控制数据库连接】。

java代码:Java代码 Spring 守旧JDBC编程替代方案
  1. package cn.javass.spring.chapter7;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import org.junit.AfterClass;
  5. import org.junit.BeforeClass;
  6. import org.junit.Test;
  7. import org.springframework.jdbc.core.JdbcTemplate;
  8. import org.springframework.jdbc.core.RowCallbackHandler;
  9. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  10. public class JdbcTemplateTest {
  11. private static JdbcTemplate jdbcTemplate;
  12. @BeforeClass
  13. public static void setUpClass() {
  14. String url = "jdbc:hsqldb:mem:test";
  15. String username = "sa";
  16. String password = "";
  17. DriverManagerDataSource dataSource = new DriverManagerDataSource(url, username, password);
  18. dataSource.setDriverClassName("org.hsqldb.jdbcDriver");
  19. jdbcTemplate = new JdbcTemplate(dataSource);
  20. }
  21. @Test
  22. public void test() {
  23. //1.声明SQL
  24. String sql = "select * from INFORMATION_SCHEMA.SYSTEM_TABLES";
  25. jdbcTemplate.query(sql, new RowCallbackHandler() {
  26. @Override
  27. public void processRow(ResultSet rs) throws SQLException {
  28. //2.处理结果集
  29. String value = rs.getString("TABLE_NAME");
  30. System.out.println("Column TABLENAME:" + value);
  31. }
  32. });
  33. }
  34. }


接下来让我们具体分析一下:

1) jdbc:hsqldb:mem:test:表示使用hsqldb内存数据库,数据库名为“test”。

2) public static void setUpClass():使用junit的@BeforeClass注解,表示在所以测试方法之前执行,且只执行一次。在此方法中定义了DataSource并使用DataSource对象创建了JdbcTemplate对象。JdbcTemplate对象是线程安全的。

3) JdbcTemplate执行流程:首先定义SQL,其次调用JdbcTemplate方法执行SQL,最后通过RowCallbackHandler回调处理ResultSet结果集。

Spring JDBC解决方法相比传统JDBC编程方式是不是简单多了,是不是只有可变部分需要我们来做,其他的都由Spring JDBC框架来实现了。

接下来让我们深入JdbcTemplate及其扩展吧。


更多关系Spring的信息

Spring 论坛 http://www.itchm.com/forum-59-1.html


读书人网 >其他数据库

热点推荐