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会报错,暂不解决。

以上为个人经验,希望能给大家一个参考。

猜你在找的Mybatis -如何处理clob类型数据相关文章

代码生成器,可以有效减少编写重复代码,快速实现简单的业务逻辑,也能让我们的代码保持一致。那目前,我们看到的代码生成器,大部分是基于velocity引擎模板生成的,接下来我
今天给大家带来的是关于Java的相关知识总结,文章围绕着JAVA正则表达式及字符串的替换与分解展开,文中有非常详细的介绍及代码示例,需求的大佬可以参考下
了SpringBoot与Postman实现REST模拟请求的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了
要实现自定义的xml配置,需要有两个默认spring配置文件来支持。一个是spring.schemas,一个是spring.handlers,前者是为了验证你自定义的xml配置文件是否符合你的格式
ArrayList基于动态数组实现,在添加和删除的时候存在扩容和缩容这样重新规划数组大小的机制。在ArrayList中,维护Object[] elementData数组来管理元素,但是ArrayList
该教程使用idea开发工具初始化javaweb项目,该运行在tomcat服务器上通过配置项目环境变量保证tomcat正常启动,具体操作配置教程参考下本文
SpringBoot 在项目启动的时候封装了创建对象的方法,无需我们手动配置,接下来通过本文给大家介绍SpringBoot 自动配置原理解析及源码展示,感兴趣的朋友一起看看吧
关于Java并发的通信机制是基于共享内存实现的,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信,这对程序员是透明的,我们需要理解其工作机制,以防
IDEA编译的时候乱码,Build Output提示信息乱码,本文就详细的介绍一下解决方法,有需要的同学可以了解一下
Cookies是 web站点放置到你的硬盘上的程序。它们驻留在你的计算机上收集关于你在因特网上所做的一切事情的信息,并且 web站点可以在任何时候读取到Cookies收集到的
本文给大家介绍Mybatis结果集映射一对多简单入门教程,包括搭建数据库环境的过程,idea搭建maven项目的代码详解,本文通过实例代码给大家介绍的非常详细,需要的朋友参考