Mybatis存取Oracle Clob数据类型的方法
时间:2021-10-09
本文章向大家介绍Mybatis存取Oracle Clob数据类型的方法,主要包括Mybatis存取Oracle Clob数据类型的方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、实体类
package com.nthforsth;
public Bean{
// 尽管要存储Clob类型数据,接收时用String类型接收
private String text;
}
二、重写mybatis的sql执行器
由于Oracle默认会把字符串先转换成varchar2类型,而varchar2类型最大长度为4000。
为了解决保存数据字段超过4000 char 问题,所以重写mybatis的sql执行器,并在 Mapper.xml 文件中调用
package com.nthforsth;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import java.sql.*;
/**
* 解决保存数据字段超过4000 char 问题
* @author yuans
* @create 2020-06-02-14:38
*/
public class OracleClobTypeHandler implements TypeHandler<Object> {
@Override
public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
Clob clob = ps.getConnection().createClob();
clob.setString(1, (String) parameter);
ps.setClob(i, clob);
}
@Override
public Object getResult(ResultSet rs, String columnName) throws SQLException {
Clob clob = rs.getClob(columnName);
return (clob == null || clob.length() == 0) ? null : clob.getSubString((long) 1, (int) clob.length());
}
@Override
public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
return null;
}
@Override
public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
return null;
}
}
三、插入数据时
Mapper.xml 文件中写 typeHandler 的全类名
<insert id="insertData" parameterType="com.nthforsth.Bean">
INSERT INTO
Table(TEXT)
VALUES(#{text,typeHandler=com.nthforsth.OracleClobTypeHandler})
</insert>
四、保存数据时
<resultMap id="BaseData" type="com.nthforsth.Bean">
<result column="text" property="text" typeHandler="com.nthforsth.OracleClobTypeHandler"/>
</resultMap>
<select id="selectData" resultMap="BaseData">
select text from table
</select>
作者:落花桂
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/nthforsth/p/15386931.html
- C/C++——柔性数组
- 用shell脚本巧妙统计文件(r2笔记57天)
- MATLAB技巧——imshow多张图片
- MATLAB技巧——sort和sortrows函数
- Python对商品属性进行二次分类并输出多层嵌套字典
- 通过shell得到数据库中权限的脚本(r2笔记77天)
- 用Python实现PCA和MDA降维和聚类
- 通过shell解析dump生成parfile(r2笔记76天)
- Web Spider实战1——简单的爬虫实战(爬取"豆瓣读书评分9分以上榜单")
- 如何用R语言从网上读取多样格式数据
- C/C++——生成随机数
- PHP基础——PHP数组
- 使用shell抽取html数据之二(r2笔记75天)
- Python爬取链家网数据:新房楼盘价格分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一些恶心的代码片段
- 学算法还能指导找对象?是的,这就是大名鼎鼎的稳定婚姻算法
- 基于SCF实现批量备份Elasticsearch索引到COS
- Prometheus Operator 常用指标
- Prometheus 常用 PromQL 语句
- 小游戏互动能力升级,获取未注册好友名单,定向分享
- 这年头还不会SpringBoot?
- PB级大规模Elasticsearch集群运维与调优实践
- 长假慢学,用TensorFlow做了个AI游戏
- 微服务平台之API授权
- 一些让人恶心的代码片段
- 一个依赖搞定 Spring Boot 反爬虫,防止接口盗刷!
- 还在用Swagger(丝袜哥)生成接口文档?我推荐你试试它...
- 技术分享 | 企业版监控工具 MEM 初探
- Java自动化测试(TestNg 10)