• 技术文章 >数据库 >MySQL

    mysql blob乱码

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

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

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

    转换类代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    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配置文件中指定

    1

    <result column="settlementContent" property="settlementContent" typeHandler="cn.xxx.utils.MyBlobTypeHandler"/>

    专题推荐:mysql
    上一篇:mysql如何查询表数据 下一篇:mysql用c语言插入中文乱码

    相关文章推荐

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

    全部评论我要评论

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

  • 取消发布评论
  • 

    Python学习网