mybatis generator自动生成代码时将blob属性变成String类型,当出现乱码时的处理方法 您所在的位置:网站首页 sql代码自动生成 mybatis generator自动生成代码时将blob属性变成String类型,当出现乱码时的处理方法

mybatis generator自动生成代码时将blob属性变成String类型,当出现乱码时的处理方法

#mybatis generator自动生成代码时将blob属性变成String类型,当出现乱码时的处理方法| 来源: 网络整理| 查看: 265

1.blob属性变成String类型,需要在配置文件中的table元素中增加columnOverride元素,详情如下例子:

        //column指blob属性修饰的字段名,javaType的值是生成代码后转换的类型,需要些类全名,这里是String类型,jdbcType是jdbc类型。

2.当转换过程中出现乱码时,需要增加typeHandler属性,如上面所示。

StringBlobTypeHandler的代码如下:

import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.sql.Blob; 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;

public class StringBlobTypeHandler extends BaseTypeHandler {     // ###指定字符集     private static final String DEFAULT_CHARSET = "utf-8";

    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)                     throws SQLException {         ByteArrayInputStream bis;         byte[] bytes = null;         try {             bytes = parameter.getBytes(DEFAULT_CHARSET);             // ###把String转化成byte流             bis = new ByteArrayInputStream(bytes);         } catch (UnsupportedEncodingException e) {             throw new RuntimeException("Blob Encoding Error!");         }         ps.setBinaryStream(i, bis, bytes.length);     }

    @Override     public String getNullableResult(ResultSet rs, String columnName) throws SQLException {         Blob blob = (Blob) rs.getBlob(columnName);         byte[] returnValue = null;         if (null != blob) {             returnValue = blob.getBytes(1, (int) blob.length());         }         try {             if (returnValue == null) {                 return null;             }             // ###把byte转化成string             return new String(returnValue, DEFAULT_CHARSET);         } catch (UnsupportedEncodingException e) {             throw new RuntimeException("Blob Encoding Error!");         }     }

    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {         Blob blob = (Blob) cs.getBlob(columnIndex);         byte[] returnValue = null;         if (null != blob) {             returnValue = blob.getBytes(1, (int) blob.length());         }         try {             return new String(returnValue, DEFAULT_CHARSET);         } catch (UnsupportedEncodingException e) {             throw new RuntimeException("Blob Encoding Error!");         }     }

    @Override     public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {         // TODO Auto-generated method stub         return null;     }

}

注:以上代码是借鉴别人的,但有做适当修改。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有