以下示例将演示使用spring jdbc更新CLOB类型的字段值,即更新student表中的可用记录。

student表的结构如下 -

  1. CREATE TABLE student(
  2. ID INT NOT NULL AUTO_INCREMENT,
  3. NAME VARCHAR(20) NOT NULL,
  4. AGE INT NOT NULL,
  5. DESCRIPTION LONGTEXT,
  6. PRIMARY KEY (ID)
  7. );
  8. INSERT INTO student(ID,NAME,AGE,DESCRIPTION) VALUES(1,'Maxsu', 23, NULL);
SQL

语法:

  1. MapSqlParameterSource in = new MapSqlParameterSource();
  2. in.addValue("id", id);
  3. in.addValue("description", new SqlLobValue(description, new DefaultLobHandler()), Types.CLOB);
  4. String SQL = "update Student set description = :description where id = :id";
  5. NamedParameterJdbcTemplate jdbcTemplateObject = new NamedParameterJdbcTemplate(dataSource);
  6. jdbcTemplateObject.update(SQL, in);
Java

在上面语法中 -

  • SqlLobValue - 表示SQL BLOB / CLOB值参数的对象。
  • in - SqlParameterSource对象将参数传递给更新查询。
  • jdbcTemplateObject - NamedParameterJdbcTemplate对象来更新数据库中的学生对象。

创建项目

要了解上面提到的Spring JDBC相关的概念,这里创建一个项目用来演示如何操作CLOB类型字段。打开Eclipse IDE,并按照以下步骤创建一个名称为:HandlingCLOB 的Spring应用程序项目。

步骤说明

  1. 参考第一个Spring JDBC项目来创建一个Maven项目 - http://www.yiibai.com/springjdbc/first_application.html
  2. 更新bean配置并运行应用程序。

完整的项目结构如下所示 -

文件 : pom.xml 的内容 -

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.yiibai</groupId>
  5. <artifactId>HandlingCLOB</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>HandlingCLOB</name>
  9. <url>http://maven.apache.org</url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>junit</groupId>
  13. <artifactId>junit</artifactId>
  14. <version>3.8.1</version>
  15. <scope>test</scope>
  16. </dependency>
  17. <dependency>
  18. <groupId>mysql</groupId>
  19. <artifactId>mysql-connector-java</artifactId>
  20. <version>5.1.40</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework</groupId>
  24. <artifactId>spring-jdbc</artifactId>
  25. <version>4.1.0.RELEASE</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework</groupId>
  29. <artifactId>spring-context</artifactId>
  30. <version>4.1.4.RELEASE</version>
  31. </dependency>
  32. </dependencies>
  33. </project>

以下是数据访问对象接口文件:StudentDAO.java的代码内容:

  1. package com.yiibai;
  2. import java.util.List;
  3. import javax.sql.DataSource;
  4. import java.util.List;
  5. import javax.sql.DataSource;
  6. public interface StudentDAO {
  7. /**
  8. * This is the method to be used to initialize database resources ie.
  9. * connection.
  10. */
  11. public void setDataSource(DataSource ds);
  12. /**
  13. * This is the method to be used to update a record into the Student table.
  14. */
  15. public void updateDescription(Integer id, String description);
  16. }
Java

以下是文件:Student.java的代码内容:

  1. package com.yiibai;
  2. public class Student {
  3. private Integer age;
  4. private String name;
  5. private Integer id;
  6. private String description;
  7. public void setAge(Integer age) {
  8. this.age = age;
  9. }
  10. public Integer getAge() {
  11. return age;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setId(Integer id) {
  20. this.id = id;
  21. }
  22. public Integer getId() {
  23. return id;
  24. }
  25. public String getDescription() {
  26. return description;
  27. }
  28. public void setDescription(String description) {
  29. this.description = description;
  30. }
  31. }
Java

以下是文件:StudentMapper.java的代码内容:

  1. package com.yiibai;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import org.springframework.jdbc.core.RowMapper;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import org.springframework.jdbc.core.RowMapper;
  8. public class StudentMapper implements RowMapper<Student> {
  9. public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
  10. Student student = new Student();
  11. student.setId(rs.getInt("id"));
  12. student.setName(rs.getString("name"));
  13. student.setAge(rs.getInt("age"));
  14. student.setDescription(rs.getString("description"));
  15. return student;
  16. }
  17. }
Java

以下是实现类文件:StudentJDBCTemplate.java,它实现了接口StudentDAO.java
以下是文件:StudentJDBCTemplate.java的代码内容:

  1. package com.yiibai;
  2. import java.util.List;
  3. import javax.sql.DataSource;
  4. import org.springframework.jdbc.core.JdbcTemplate;
  5. import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
  6. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  7. import org.springframework.jdbc.core.namedparam.SqlParameterSource;
  8. import org.springframework.jdbc.core.simple.SimpleJdbcCall;
  9. import org.springframework.jdbc.core.support.SqlLobValue;
  10. import org.springframework.jdbc.support.lob.DefaultLobHandler;
  11. import java.io.ByteArrayInputStream;
  12. import java.sql.Types;
  13. public class StudentJDBCTemplate implements StudentDAO {
  14. private DataSource dataSource;
  15. private JdbcTemplate jdbcTemplateObject;
  16. public void setDataSource(DataSource dataSource) {
  17. this.dataSource = dataSource;
  18. }
  19. public void updateDescription(Integer id, String description) {
  20. MapSqlParameterSource in = new MapSqlParameterSource();
  21. in.addValue("id", id);
  22. in.addValue("description", new SqlLobValue(description, new DefaultLobHandler()), Types.CLOB);
  23. String SQL = "update Student set description = :description where id = :id";
  24. NamedParameterJdbcTemplate jdbcTemplateObject = new NamedParameterJdbcTemplate(dataSource);
  25. jdbcTemplateObject.update(SQL, in);
  26. System.out.println("Updated Record with ID = " + id);
  27. }
  28. }
Java

以下是程序执行入口文件:MainApp.java的代码内容:

  1. package com.yiibai;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. import com.yiibai.StudentJDBCTemplate;
  5. public class MainApp {
  6. public static void main(String[] args) {
  7. ApplicationContext context = new ClassPathXmlApplicationContext("application-beans.xml");
  8. StudentJDBCTemplate studentJDBCTemplate = (StudentJDBCTemplate) context.getBean("studentJDBCTemplate");
  9. studentJDBCTemplate.updateDescription(1, "This can be a very long text upto 4 GB of size.");
  10. }
  11. }
Java

以下是Bean和数据库配置文件:application-beans.xml的代码内容:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
  6. <!-- Initialization for data source -->
  7. <bean id="dataSource"
  8. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  9. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  10. <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true" />
  11. <property name="username" value="root" />
  12. <property name="password" value="123456" />
  13. </bean>
  14. <!-- Definition for studentJDBCTemplate bean -->
  15. <bean id="studentJDBCTemplate" class="com.yiibai.StudentJDBCTemplate">
  16. <property name="dataSource" ref="dataSource" />
  17. </bean>
  18. </beans>
XML

注意: application-beans.xml 文件的位置是:{workspace}/fistapp/src/main/java 目录,如果放置错了,程序可能会因为找不到此配置文件而出错。

完成创建源代码和bean和数据库连接信息的文件配置后,运行应用程序。这里先简单说明一下运行的步骤,在项目名称(HandlingCLOB)上点击右键,在弹出的菜单中选择:【Run As】-> 【Maven test】

在运行测试成功后,应该会输出类似以下内容(含有 BUILD SUCCESS 的信息) 。
接下来,点击类文件:MainApp.java 选择【Run As】->【Java Application】,如果应用程序一切正常,这将打印以下消息:

  1. Updated Record with ID = 1
Shell

数据库中的student表中的数据被修改为:

  1. mysql> select * from student;
  2. +----+-------+-----+-------------------------------------------------+
  3. | ID | NAME | AGE | DESCRIPTION |
  4. +----+-------+-----+-------------------------------------------------+
  5. | 1 | Maxsu | 23 | This can be a very long text upto 4 GB of size. |
  6. +----+-------+-----+-------------------------------------------------+
  7. 1 row in set
  8. mysql>
SQL
 

Spring JDBC处理CLOB类型字段的更多相关文章

  1. Spring JDBC处理BLOB类型字段

    以下示例将演示使用spring jdbc更新BLOB类型的字段值,即更新student表中的可用记录. student表的结构如下 - CREATE TABLE student( ID INT NOT ...

  2. Java更新Oracle的clob类型字段

    Java更新Oracle的clob类型字段 1.查询该clob字段 2.处理该clob字段查询结果 3.更新该clob字段查询结果 1.查询该clob字段 <select id="se ...

  3. oracle中关于clob类型字段的查询效率问题

    今天,公司项目某个模块的导出报如下错误: HTTP Status 500 – Internal Server Error Type Exception Report Message Handler d ...

  4. .Net处理Oracle中Clob类型字段总结

    最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的 ...

  5. Java 存储和读取 oracle CLOB 类型字段的实用方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.Str ...

  6. jsp里更新Clob类型字段数据

    ResultSet rs = null; Connection conn = new dbconn().getconnect(); Statement stmt = null; int news=0; ...

  7. Oracle中Clob类型处理解析

    最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的 ...

  8. Oracle中Clob类型处理解析 (转)

    转:原文:http://blog.csdn.net/pojianbing/article/details/2789426      最近利用NHibernate映射类型为Clob字段在插入数据时发现当 ...

  9. 问题:oracle CLOB类型;结果:oracle中Blob和Clob类型的区别

    BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图 ...

随机推荐

  1. tcp拥堵算法

    http://m.blog.csdn.net/article/details?id=6739189

  2. javascript的toString深入探究

    toString()方法是所有对象都有的一个方法,无论是字符串,数组,对象,都可以调用这个方法,但是,事实上,他们调用的并不是同一个函数哦! 看下面的代码: var str = '123'; cons ...

  3. 关键词抽取:pagerank,textrank

    摘抄自微信公众号:AI学习与实践 TextRank,它利用图模型来提取文章中的关键词.由 Google 著名的网页排序算法 PageRank 改编而来的算法. PageRank PageRank 是一 ...

  4. (装机)关于WINRE/ESP/LRS_ESP/MSR/PBR这些分区

    WINRE 1GB 用途:Windows 8 系统恢复模式.这个分区是保存是在Windows 8 系统主体本身被破坏无法正常启动的时候进行系统修复的Windows 8 PE系统.. ESP 260MB ...

  5. Kafka: Connect

    转自:http://www.cnblogs.com/f1194361820/p/6108025.html Kafka Connect 简介 Kafka Connect 是一个可以在Kafka与其他系统 ...

  6. 腾讯云主机安装登录mysql失败--解决方案[重置root密码并实现远程连接]

    登录MySQL时报错:Access denied for user 'root'@'localhost' (using password: YES) 解决步骤: 1.使用ssh工具连接主机,使用mys ...

  7. 数据初始化:有则更新无则添加(mySql,oracle)

    数据初始化:有则更新无则添加(mySql,oracle) 2018-02-01 1 Orcale ) ),address )); -- 执行两次,会报 [Err] ORA-00001: unique ...

  8. linux下的c/c++调试器gdb

    Reference:  http://www.cnblogs.com/xd502djj/archive/2012/08/30/2663960.html linux下的c/c++调试器gdb gdbLi ...

  9. iOS内存管理和优化 from 刘延军

  10. busybox tar 命令支持 tar.gz

    原始的 busybox 里面的 tar 命令不支持 tar.gz 解压 在 busybox-menuconfig 里面加入 下面的选项即可