快速业务通道

Spring源代码解析(三):Spring JDBC - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
。在这 里我们只需要定义SQL语句和SqlParameter - 如果需要的话,往往SQL语句就常常能够满 足我们的要求了。这是灵活使用JdbcTemplate的一个很好的例子。

Spring还为其他数据库操作提供了许多服务,比如使用SqlUpdate插入和更新数据库, 使用UpdatableSqlQuery更新ResultSet,生成主键,调用存储过程等。

书中还给出了对BLOB数据和CLOB数据进行数据库操作的例子:

对BLOB数据的操作通过LobHander来完成,通过调用JdbcTemplate和RDBMS都可以进行 操作:

在JdbcTemplate中,具体的调用可以参考书中的例子 - 是通过以下调用起作用的:

代码

public Object execute(String sql, PreparedStatementCallback action) throws DataAccessException {    return execute(new SimplePreparedStatementCreator(sql), action); }

然后通过对实现PreparedStatementCallback接口的 AbstractLobCreatingPreparedStatementCallback的回调函数来完成:

代码

public final Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {    LobCreator lobCreator = this.lobHandler.getLobCreator();    try {      //这是一个模板方法,具体需要由客户程序实现      setValues(ps, lobCreator);      return new Integer(ps.executeUpdate());    }    finally {      lobCreator.close();    } } //定义的需要客户程序实现的虚函数 protected abstract void setValues(PreparedStatement ps, LobCreator lobCreator)      throws SQLException, DataAccessException;

而我们注意到setValues()是一个需要实现的抽象方法,应用程序通过实现setValues 来定义自己的操作 - 在setValues中调用lobCreator.setBlobAsBinaryStrem()。让我们 看看具体的BLOB操作在LobCreator是怎样完成的,我们一般使用DefaultLobCreator作为 BLOB操作的驱动:

代码

public void setBlobAsBinaryStream(      PreparedStatement ps, int paramIndex, InputStream binaryStream, int contentLength)      throws SQLException {    //通过JDBC来完成对BLOB数据的操作,对Oracle,Spring提供了OracleLobHandler 来支持BLOB操作。    ps.setBinaryStream(paramIndex, binaryStream, contentLength);    ........ }

上面提到的是零零碎碎的Spring JDBC使用的例子,可以看到使用Spring JDBC可以帮 助我们完成许多数据库的操作。Spring对数据库操作最基本的服务是通过JdbcTeamplate 和他常用的回调函数来实现的,在此之上,又提供了许多RMDB的操作来帮助我们更便利的 对数据库的数据进行操作 - 注意这里没有引入向Hibernate这样的O/R方案。对这些O/R方 案的支持,Spring由其他包来完成服务。

书中还提到关于execute和update方法之间的区别,update方法返回的是受影响的记录 数目的一个计数,并且如果传入参数的话,使用的是java.sql.PreparedStatement,而 execute方法总是使用 java.sql.Statement,不接受参数,而且他不返回受影响记录的计 数,更适合于创建和丢弃表的语句,而update方法更适合于插入,更新和删除操作,这也 是我们在使用时需要注意的。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号