所谓CLOB 可以看成是文本文,所谓BLOB可以看成是图片文件
假设在mysql数据库上有以下表:

假设现在分别读取一个文字文件和二进制文件,并想将之存储到数据库中,则可以使用JdbcTemplate 如:
final File binaryFile=new File("wish.jpg"); final File txtFile=new File("test.txt"); final InputStream is=new FileInputStream(binaryFile); final Reader reader=new FileReader(txtFile); JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); final LobHandler lobHandler=new DefaultLobHandler(); jdbcTemplate.execute("insert into test (txt,image) values (?,?)", new AbstractLobCreatingPreparedStatementCallBack(lobHandler){ protected void setValues(PreoparedStatement pstmt,LobCreator lobCreator){ lobCreator.setClobAsCharactoerStream(pstmt,1,reader,(int)textFile.length()); lobCreator.setBlobAsBinaryStream(pstmt,2,is,(int)binaryFile.length()); } }); reader.close(); is.close(); final File binaryFile=new File("wish.jpg"); final File txtFile=new File("test.txt"); final InputStream is=new FileInputStream(binaryFile); final Reader reader=new FileReader(txtFile); JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); final LobHandler lobHandler=new DefaultLobHandler(); jdbcTemplate.execute("insert into test (txt,image) values (?,?)", new AbstractLobCreatingPreparedStatementCallBack(lobHandler){ protected void setValues(PreoparedStatement pstmt,LobCreator lobCreator){ lobCreator.setClobAsCharactoerStream(pstmt,1,reader,(int)textFile.length()); lobCreator.setBlobAsBinaryStream(pstmt,2,is,(int)binaryFile.length()); } }); reader.close(); is.close();
在建立AbstractLobCreatingPreparedStatementCallBack对象时候,需要一个lobHandler实例, 对于一般的数据库,采用DefaultLobHandler足以,对于Oracle 9i特定的lob处理,可以使用OracleLobHandler
如果是讲数据从数据库中读取出来并另存在未见,可以使用下面的程序
final Writer writer=new FileWriter("test_back.txt"); final OutputStream os=new FileOutputStream(new File("wish_bak.jpg")); jdbcTemplate.query("select txt,image from test where id=?,new AbstractLobStreamingResultSetExtractor(){ protected void streamData(ResultSet rs) throws SQLException,IOException,DataAccessException{ FileCopyUtils.copy(lobHandler.getClobAsCharacterStream(rs,1),writer); FileCopyUtils.copy(lobHandler.getBlobAsBinaryStream(rs,2),os); } }); writer.close(); os.close();
这里使用FileCopyUtils的copy方法,将lobHandler取得的串流直接转接给文件输出FileWriter,FileOutputStream对象
相关推荐
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
这篇博客主要探讨了如何使用Spring处理CLOB(Character Large Object)和BLOB(Binary Large Object)这两种大数据类型的字段。CLOB通常用于存储大文本数据,如文章、报告等,而BLOB则用于存储二进制大数据,如图片...
使用Spring的JdbcTemplate实现分页功能
本教程将深入探讨如何使用基于注解的Spring JdbcTemplate进行数据库操作,特别适合初学者入门学习。 ### 1. Spring JdbcTemplate简介 Spring JdbcTemplate提供了一个面向对象的接口,用于执行SQL查询、更新和存储...
SpringJdbcTemplate能够自适应多种数据库,这是因为它的底层使用了JDBC的规范,而不同的数据库厂商都实现了JDBC API。这使得你可以使用相同的代码来连接MySQL、Oracle、PostgreSQL等不同类型的数据库,只需更换相应...
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
《深入解析Spring JdbcTemplate》 Spring JDBC Template是Spring框架中...这个实例工程为我们提供了一个学习和实践Spring JdbcTemplate的良好平台,通过对其中代码的分析和运行,可以更好地理解和掌握其用法和精髓。
模仿spring jdbcTemplate的粗略实现,只有很小的参考价值,如果是java初学者可以使用这个封装好的工具进行数据库操作,只需要在db.properties里配置好driver,url等信息
总的来说,这个简易登录系统结合了Struts2的MVC架构、Spring的依赖注入和事务管理以及Spring JDBC Template的数据库操作,实现了用户登录功能。通过这样的组合,开发者可以更高效地构建和维护Java Web应用。
在Spring框架中,JdbcTemplate是用于简化数据库操作的重要工具,它是Spring JDBC模块的一部分。通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文...
3. `spring-jdbc-5.0.0.RELEASE.jar`:包含Spring对JDBC的支持,包括JDBCTemplate和DataSourceTransactionManager,它们是与数据库交互和管理事务的关键。 4. `spring-tx-5.0.0.RELEASE.jar`:提供了事务管理功能,...
本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...
在本例中,我们将深入探讨Spring JdbcTemplate的工作原理、使用方式以及它的优点。 首先,JdbcTemplate的核心理念是通过预编译的SQL语句和参数绑定来防止SQL注入攻击,同时提供事务管理的支持。它提供了大量方法来...
Spring JdbcTemplate是Spring框架中用于简化数据库操作的一个重要组件,它是Spring对JDBC的轻量级封装,旨在提供一种结构良好、易于使用的SQL执行机制,同时保持了JDBC的灵活性。在本实例中,我们将深入探讨Spring ...
使用Spring的JdbcTemplate调用Oracle的存储过程
在Spring框架中,`JdbcTemplate`是一个用于简化JDBC编程的工具类,它采用了模板模式来分离数据库访问中的不变和可变部分,提供了一种更加健壮且易于使用的数据访问机制。`JdbcTemplate`负责处理资源的获取、关闭以及...
通过本章节的学习,您应该能够掌握如何使用JdbcTemplate进行基本的数据库操作,以及如何在Spring中配置和使用声明式事务来管理复杂的业务流程。这些技能对于开发基于Spring框架的应用程序至关重要。
本篇将深入探讨Spring JDBCTemplate的使用及其源码解析,帮助你理解其背后的机制。 首先,让我们了解在不使用JDBCTemplate时,传统的JDBC操作通常涉及以下步骤:加载驱动、建立数据库连接、创建Statement或...
spring JdbcTemplate query方法使用示例,欢迎下载借鉴
在提供的文件列表中,`BaseDao.java`和`BaseDaoImpl.java`很可能是自定义的基类和实现类,用于封装JdbcTemplate的常用操作。BaseDao通常会定义一些基本的CRUD(创建、读取、更新、删除)方法,如`selectById(int id)...