iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用mybatis的typeHandler对clob进行流读写
  • 589
分享到

如何使用mybatis的typeHandler对clob进行流读写

2023-06-26 05:06:29 589人浏览 独家记忆
摘要

这篇文章主要介绍“如何使用mybatis的typeHandler对clob进行流读写”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用mybatis的typeHandler对clob进行流读写”

这篇文章主要介绍“如何使用mybatis的typeHandler对clob进行流读写”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用mybatis的typeHandler对clob进行流读写”文章能帮助大家解决问题。

    typeHandler对clob进行流读写

    分为三步:

    第一步:编写typehandler文件

    package com.dcits.edps.common.utils; import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Reader;import java.io.StringReader;import java.io.Writer;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.MappedJdbcTypes;import org.apache.ibatis.type.MappedTypes;import org.springframework.util.FileCopyUtils;  @MappedTypes({String.class}) @MappedJdbcTypes({JdbcType.CLOB}) public class OscarClobTypeHandler extends BaseTypeHandler<String> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)throws SQLException {final StringReader sr = new StringReader(parameter);final int length = parameter.getBytes().length;ps.setCharacterStream(i, sr, length);sr.close();} @Overridepublic String getNullableResult(ResultSet rs, String columnName) throws SQLException {final OutputStream outPutStream = new ByteArrayOutputStream();final Writer writer = new OutputStreamWriter(outPutStream);try {Reader reader = rs.getCharacterStream(columnName);if(null == reader){return null;}else {FileCopyUtils.copy(reader, writer);}} catch (IOException e) {e.printStackTrace();}return outPutStream.toString();} @Overridepublic String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {final OutputStream outPutStream = new ByteArrayOutputStream();final Writer writer = new OutputStreamWriter(outPutStream);try {Reader reader = rs.getCharacterStream(columnIndex);if(null == reader){return null;}else {FileCopyUtils.copy(reader, writer);} }catch (IOException e) {e.printStackTrace();}return outPutStream.toString();} @Overridepublic String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {final OutputStream outPutStream = new ByteArrayOutputStream();final Writer writer = new OutputStreamWriter(outPutStream);try {Reader reader = cs.getCharacterStream(columnIndex);if(null == reader){return null;}else {FileCopyUtils.copy(reader, writer);}} catch (IOException e) {e.printStackTrace();}return outPutStream.toString();}  }

    第二步:在mybatis的配置文件中添加<typeHandlers>节点

    需要注意的是,mybatisd的配置文件中的<configuration>节点中的子节点需要有顺序

    顺序为:properties&mdash;>settings&mdash;>typeAliases&mdash;>typeHandlers&mdash;>objectFactory&mdash;>objectWrapperFactory&mdash;>plugins&mdash;>environments&mdash;>databaseIdProvider&mdash;>mappers。

    <typeHandlers>    <typeHandler handler="com.dcits.edps.common.utils.OscarClobTypeHandler"/> </typeHandlers>

    第三步

    ①在resultMap中需要添加jdbcType,这是在读取时使用了流,如下所示

     <resultMap type="com.dcits.edps.swgl.common.bean.SwMain" id="swmain">      <result property="fsfh" column="fsfh" jdbcType="CLOB"/>  </resultMap>

    ② 在写入数据的时候使用:

    fsfh=#{fsfh,jdbcType=CLOB}

    mybatis处理clob字段

    由于数据库中 ggnr 字段是clob 类型(可以存储流对象),所以后台对前台传递的长文本进行处理。

    经过一番查找,找到mybatis处理clob字段的方法,对clob 进行了尝试处理,发现存的数据长度超过一两百,数据库该字段就为空,存的短可以。

    经过查阅跟公司同事沟通,总结两种方案:(1).直接获取数据库连接,操作预编译对象(老方法,高并发数据库容易卡死,不符)。(2).sql使用 begin end 方法(经测试可以存储字节4000以内的数据,要求不符)

    好吧再次查阅jdbc官方文档,上边提到ojdbc 存在数据限制情况,建议高版本,然后就换了ojdbc6 问题解决。

    换了之后,ok。如果有懒加载,添加上这个 cglib-nodep-3.2.4.jar

    附上Mapper处理:

    修改Mapper.xml

      <result column="GGNR" property="ggnr"  javaType="java.lang.String" jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler"/>

    sql

        insert into CQGG(ggnr) values(#{ggnr,jdbcType=CLOB})

    关于“如何使用mybatis的typeHandler对clob进行流读写”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: 如何使用mybatis的typeHandler对clob进行流读写

    本文链接: https://www.lsjlt.com/news/307014.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 如何使用mybatis的typeHandler对clob进行流读写
      这篇文章主要介绍“如何使用mybatis的typeHandler对clob进行流读写”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用mybatis的typeHandler对clob进行流读写”...
      99+
      2023-06-26
    • 使用mybatis的typeHandler对clob进行流读写方式
      目录typeHandler对clob进行流读写第一步:编写typehandler文件第二步:在mybatis的配置文件中添加<typeHandlers>节点第三步myba...
      99+
      2024-04-02
    • C#如何使用NPOI对word进行读写
      这篇文章主要介绍了C#如何使用NPOI对word进行读写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#如何使用NPOI对word进行读写文章都会有所收获,下面我们一起来看看吧。一、简介操作Word的类库:N...
      99+
      2023-07-02
    • C#使用NPOI对word进行读写
      目录一、简介操作Word的类库:二、简单使用1、XWPFDocument类的实例化2、设置页面的大小3、段落处理4、表格处理5、页眉页脚处理三、综合示例四、参考一、简介 操作Word...
      99+
      2024-04-02
    • Java操作IO对象流进行数据的读写
      对象的读写 使用ObjectInputStream和ObjectOutputStream读写对象(序列化与反序列化)。 只有字节流没有字符流 .类必须实现Serializa...
      99+
      2024-04-02
    • Linux下如何使用Octave对文件进行读写操作
      小编给大家分享一下Linux下如何使用Octave对文件进行读写操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Octave 是一个 Linux 上类似于 Ma...
      99+
      2023-06-27
    • 在spring中使用mybatis实现对mysql数据库进行读写分离
      这期内容当中小编将会给大家带来有关在spring中使用mybatis实现对mysql数据库进行读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言    &n...
      99+
      2023-05-31
      spring mybatis mysql
    • 使用Spring Boot如何对Mybatis进行整合
      今天就跟大家聊聊有关使用Spring Boot如何对Mybatis进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。依赖配置结合前面的内容,这里我们要嵌入数据库的操作,这里以操作...
      99+
      2023-05-31
      springboot mybatis
    • linux中如何使用Octave对音频文件进行读写操作
      这篇文章主要介绍了linux中如何使用Octave对音频文件进行读写操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Octave 是一个 Linux 上类似于 Matlab...
      99+
      2023-06-16
    • C#中如何使用文件IO和流操作进行数据读写
      C#中如何使用文件IO和流操作进行数据读写,需要具体代码示例在C#编程中,文件IO和流操作是常用的技术,用于读取和写入文件的数据。无论是处理文本文件、二进制文件,还是读取网络流数据,我们都可以通过文件IO和流操作来实现。文件IO和流操作提供...
      99+
      2023-10-22
      C#文件IO操作 C#流操作 数据读写技术
    • 使用R语言怎么对二进制文件进行读写
      这篇文章将为大家详细讲解有关使用R语言怎么对二进制文件进行读写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。二进制文件是一个文件,其中包含仅以位和字节形式存储的信息(0和1),它们是不可读的...
      99+
      2023-06-08
    • 使用Spring boot如何实现对Mybatis进行集成
      使用Spring boot如何实现对Mybatis进行集成?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。本章目标整合 Mybatis ,并集成 Druid 数据...
      99+
      2023-05-31
      springboot mybatis
    • C++ qt如何使用jsoncpp json进行读写操作
      这篇文章将为大家详细讲解有关C++ qt如何使用jsoncpp json进行读写操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JsonCpp的使用项目需要c++下使用...
      99+
      2023-06-21
    • 如何进行Python数据编组对文字串的读写
      如何进行Python数据编组对文字串的读写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用前一节中介绍的模块,可以实现在文件中对字符串的读写。然而,有的时候,...
      99+
      2023-06-17
    • 使用R语言怎么对CSV文件进行读写
      这期内容当中小编将会给大家带来有关使用R语言怎么对CSV文件进行读写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在R中,我们可以从存储在R环境外部的文件读取数据,还可以将数据写入由操作系统存储和访问的文...
      99+
      2023-06-08
    • java利用缓冲区及流式对大文件进行高效读写
      当处理大文件时,使用适当的技术和方法可以提高读写性能和效率。下面是一些针对大文件读写的示例说明: 字符流缓冲区及分块读写  BufferedInputStream 和 BufferedOutputStream 大文件读取: try (F...
      99+
      2023-09-14
      java 数学建模 开发语言
    • Java如何利用Socket进行数据读写
      目录利用Socket进行数据读写InetAddress与URLSocket通信UDP通信Socket通信中,持续单向读写的同步问题发送端Socket操作(Socket send)接收...
      99+
      2024-04-02
    • 如何使用 libp2p 在 golang 中处理对等点的缓冲读写流?
      你在学习Golang相关的知识吗?本文《如何使用 libp2p 在 golang 中处理对等点的缓冲读写流?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程...
      99+
      2024-04-04
    • 如何在R语言中对文本文件进行读写
      如何在R语言中对文本文件进行读写?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:read.table(file,sep,hesder)#file 文件路径#s...
      99+
      2023-06-08
    • 如何在Python中使用Numpy进行文件读写操作?
      当我们在使用Python进行科学计算时,Numpy是一个非常重要的工具。它提供了大量的数学函数和数组操作方法,可以让我们更高效地进行数据分析和处理。在本文中,我们将介绍如何使用Numpy进行文件读写操作,并提供一些示例代码。 文件读写操作...
      99+
      2023-06-01
      numpy django 文件
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作