Mybatis -如何处理clob类型数据

Mybatis 处理clob类型数据

当执行sql语句,返回的是map类型时, 比如

public List<Map<String, Object>> query(@Param("sql") String sql)

得到的数据是List<Map>类型数据,此时,如果有返回的有clob字段时,数据是这样的oracle.sql.CLOB@63636de0 ,显然,这不是我想要的,我需要的是字符串数据

那么怎么来处理clob字段呢,很简单

就是定义类型处理器,来专门处理Clob字段,将Clob数据转换为字符串数据返回

@MappedJdbcTypes(JdbcType.CLOB)
public class ClobTypeHandle extends BaseTypeHandler<Object> {
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)
            throws SQLException {
        ps.setObject(i, parameter);
    }
    @Override
    public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return rs.getString(columnName);
    }
    @Override
    public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return rs.getString(columnIndex);
    }
    @Override
    public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return cs.getString(columnIndex);
    }
}

Mybatis 大字段clob处理

1. 实体类View

package com.ttt.sysManager.po;
public class View {
 private String VIEW_NAME;
 private String TEXT_LENGTH;
 private String TEXT;<span style="white-space:pre"> </span>// clob大字段
 private String EDITIONING_VIEW;
 private String READ_ONLY;
        // ...(get、set方法)
}

2. Dao

List<View> getViewByPage(Map<String, Object> map);

3. XML

<resultMap id="viewResultMap" type="com.ttt.sysManager.po.View">
        <result property="VIEW_NAME" column="VIEW_NAME"/>
        <result property="TEXT_LENGTH" column="TEXT_LENGTH"/>
        <result property="TEXT" column="TEXT" javaType="String" jdbcType="VARBINARY"/>
        <result property="EDITIONING_VIEW" column="EDITIONING_VIEW" />
        <result property="READ_ONLY" column="READ_ONLY" />
</resultMap>  

<select id="getViewByPage" parameterType="map" resultMap="viewResultMap" >
 SELECT VIEW_NAME,TEXT_LENGTH,TEXT,EDITIONING_VIEW,READ_ONLY FROM (
  SELECT A.*,  ROWNUM RN
    FROM (SELECT * FROM user_views) A
    WHERE ROWNUM <![CDATA[<=]]> #{endRow}
  ) WHERE RN <![CDATA[>]]> #{startRow}
</select>

4. 写入

写入大字段与普通写入无区别,但是数据库字段类型需为clob,如为blob会报错,暂不解决。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解析jdbc处理oracle的clob字段的详解

    import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.Reader;import java.sql.Clob;import java.sql.Connection;import java.sql.ResultSet;

  • Oracle的CLOB大数据字段类型操作方法

    一.Oracle中的varchar2类型 我们在Oracle数据库存储的字符数据一般是用VARCHAR2.VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同. 在Oracle Database中,VARCHAR2 字段类型,最大值为4000:PL/SQL中 VARCHAR2 变量类型,最大字节长度为32767. 当 VARCHAR2 容纳不下我们需要存储的信息时,就出来的Oracle的大数据类型LOB( La

  • 深入浅析mybatis oracle BLOB类型字段保存与读取

    一.BLOB字段 BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写.其中BLOB是用来存储大量二进制数据的:CLOB用来存储大量文本数据.BLOB通常用来保存图片.文件等二进制类型的数据. 二.使用mybatis操作blob 1.表结构如下: create table BLOB_FIELD ( ID VARCHAR2(64 BYTE) not null, TAB_NAME VARC

  • Mybatis -如何处理clob类型数据

    Mybatis 处理clob类型数据 当执行sql语句,返回的是map类型时, 比如 public List<Map<String, Object>> query(@Param("sql") String sql) 得到的数据是List<Map>类型数据,此时,如果有返回的有clob字段时,数据是这样的oracle.sql.CLOB@63636de0 ,显然,这不是我想要的,我需要的是字符串数据 那么怎么来处理clob字段呢,很简单 就是定义类型处理

  • mybatis返回map类型数据空值字段不显示的解决方案

    目录 mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 ResultType利用实体返回 springMVC+mybatis查询数据 mybatis返回map空值未返回字段 mybatis开启CallSettersOnNulls mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 IFNULL(rate,'') as rate ResultType利用实体返回 不用map springMVC+mybatis查询数据 返回resultType=”m

  • mybatis查询实现返回List<Map>类型数据操作

    如下所示: **只要设定resultType而不设定resultMap就可以了**: < select id = "selectByPage" parameterType = "java.util.Map" resultType="java.util.Map" > select rs.*, rssetting.*, cp.STOCK_CODE, cp.UNAME from RS rs left join T_COMPANY cp on

  • mybatis 如何返回list<String>类型数据

    mybatis返回list<String>类型数据 studends表里一条teacher_id 数据对应多条 student_id数据,所以通过teacher_id 查询出来的student_id 是一个List. mybatis代码如下: //返回类型是String类型的student_id <resultMap id="studentIdResult" type="java.lang.String" > <result colum

  • Mybatis实现自定义类型转换器TypeHandler的方法

    先给大家简单介绍下mybatis MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 此文其实是java操作Oracle类型XMLType总结二:使用Mybatis附带的一篇小结. Mybatis实现自定义的转换器,

  • 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以. 使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型. 后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度.如字段 name char(5),若值为sgl,那么oracle会自动用空格补足长度,最终值为sgl. 一.解决方法: 方法1:先用trim()函数把值去掉两边空格再作为条件查询

  • 解决MyBatis返回结果类型为Boolean的问题

    问题描述: 在使用MyBatis时,有时需要检查某个记录是否存在数据库中,然后根据其返回的布尔值true or false,来进行逻辑判断.那怎么做呢? 解决方案: 如检测某个手机号是否被注册过: <select id="checkPhoneExist" parameterType="java.lang.String" resultType="java.lang.Boolean"> <![CDATA[ select count(

  • mybatis 返回Map类型key改为小写的操作

    默认情况下,当resultType="java.util.Map"时,返回的key值都是大写的. 现在想key改成自己想要的,只需为查询出来的字段增加个别名即可. 如: <select id="getStudentList" resultType="java.util.Map"> select t.name as "sName",t.sex as "sSex" from student <

随机推荐