• 技术文章 >数据库 >MySQL

    mysql blob乱码

     Ly Ly2020-06-10 15:38:56原创2005

    mysql中blob类型乱码的解决方法:

    可以自己写个转换类,然后用自己的转换类进行转换。

    转换类代码如下:

    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 MyBlobTypeHandler extends BaseTypeHandler<String> {  
        //###指定字符集  
        private static final String DEFAULT_CHARSET = "utf-8";  
        public void setNonNullParameter(PreparedStatement ps, int i,  
                String parameter, JdbcType jdbcType) throws SQLException {  
            ByteArrayInputStream bis;  
            try {  
                //###把String转化成byte流  
                bis = new ByteArrayInputStream(parameter.getBytes(DEFAULT_CHARSET));  
            } catch (UnsupportedEncodingException e) {  
                throw new RuntimeException("Blob Encoding Error!");  
            }     
            ps.setBinaryStream(i, bis, parameter.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 {  
                //###把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;
        }
    }

    在mybatis配置文件中指定

    <result column="settlementContent" property="settlementContent" typeHandler="cn.xxx.utils.MyBlobTypeHandler"/>
    专题推荐:mysql
    上一篇:mysql如何查询表数据 下一篇:mysql用c语言插入中文乱码

    相关文章推荐

    • MySQL为什么提示Python没有安装• mysql外键约束怎么写• mysql如何查询表数据

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网