MYSQL数据同步BlOB字段,出现乱码的问题

问题详情:
框架为SSM
业务场景:
将数据库表a中的内容字段(longblob ),转存到表b中时,b中内容乱码,文件大小改变;
困扰了我好久.
查看网上资料没有找到合适的解决方案,最终老板给出了解决方案,留记录.
经查看,是在插入过程中代码中使用byte[]转存,出现的乱码问题.
解决方法:
1.在java代码中写sql语句,不经过mybatis层

public void insertOrUpdate(List<Z> newAddList) {
        String sql = "REPLACE INTO TABLE (ARTICLE_ID, NAME,CONTENT,MAP_SOURCE,MAP_ID,SYNC_TIME,CREATOR)" + //
                "values (?, ?, ?, '固定字段', ?, ?, '固定字段')";
        try (Transaction tran = AppContext.getDefaultTransaction()) {
            tran.prepare(sql);
            for (Z  z : newAddList) {
                tran.setParameters(attachmentVo.getArticleId(), attachmentVo.getAtteName(), attachmentVo.getAtteContent(), attachmentVo.getId(),
                        attachmentVo.getTrsupDate());
                tran.executeUpdate();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

2.更改BlobByteTypeHandler
typeHandler=org.apache.ibatis.type.ByteArrayTypeHandler

xml中该字段的类型

<result column="atte_content" javaType="byte[]" jdbcType="LONGVARBINARY" property="atteContent" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值