mybatis generator自动生成代码时将blob属性变成String类型,当出现乱码时的处理方法 | 您所在的位置:网站首页 › sql代码自动生成 › mybatis generator自动生成代码时将blob属性变成String类型,当出现乱码时的处理方法 |
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 实验室设备网 版权所有 |