• 关于#mysql#的问题:使用Mybatis查询Mysql,为什么表里类型为Blob的字段查出来是null(语言-java)


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 qq_41948800 2024-06-19 15:40 采纳率: 0% 浏览 4 首页/ 编程语言 / 关于#mysql#的问题:使用Mybatis查询Mysql,为什么表里类型为Blob的字段查出来是null(语言-java) java 使用Mybatis查询Mysql,为什么表里类型为Blob的字段查出来是null 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-19 15:40
      关注

      引自免费微信小程序:皆我百晓生

      遇到在使用Mybatis查询MySQL数据库时,Blob类型的字段返回null的情况,这通常是因为Blob数据的特殊性以及Mybatis处理Binary数据的方式导致的。下面是一些可能的解决步骤和示例代码,帮助你解决这个问题。

      步骤1: 检查Mapper文件中的配置

      确保在你的Mapper XML文件中,Blob类型的字段正确地被映射。例如,如果你的表中有一个名为image的Blob字段,你的Mapper文件应该如下所示:

      
      
      

      在这个例子中,不需要特别指定image字段的类型,因为Mybatis默认会根据数据库元数据识别类型。

      步骤2: 确保Java实体类正确处理Blob类型

      在你的Java实体类中,Blob字段应该被声明为byte[]类型。例如:

      public class User {
          private int id;
          private String name;
          private byte[] image; // Blob字段应被声明为byte[]
          // getter和setter方法省略...
      }
      

      步骤3: 使用ResultSetType.FORWARD_ONLY提高性能

      有时,由于性能原因,Mybatis可能不会加载Blob数据,特别是当结果集很大时。可以通过设置resultSetType属性为FORWARD_ONLY来提高处理效率:

      
      

      步骤4: 自定义TypeHandler处理Blob数据

      如果上述方法仍然不能解决问题,可能需要自定义一个TypeHandler来处理Blob类型。创建一个实现org.apache.ibatis.type.TypeHandler接口的类,并在Mybatis配置文件中注册它:

      // CustomBlobTypeHandler.java
      public class CustomBlobTypeHandler implements TypeHandler {
          @Override
          public void setParameter(PreparedStatement ps, int i, byte[] parameter, JdbcType jdbcType) throws SQLException {
              ps.setBytes(i, parameter);
          }
      
          @Override
          public byte[] getResult(ResultSet rs, String columnName) throws SQLException {
              return rs.getBytes(columnName);
          }
      
          @Override
          public byte[] getResult(CallableStatement cs, int columnIndex) throws SQLException {
              return cs.getBytes(columnIndex);
          }
      }
      
      // mybatis-config.xml
      
          
      
      

      通过这些步骤,你应该能够解决在使用Mybatis查询MySQL数据库时Blob字段返回null的问题。如果还有其他疑问或具体错误信息,提供更多的细节将有助于更精确地定位问题。

      展开全部

      评论 编辑记录
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      浅看SpringBoot的自动装配
      LeetCode 53. 最大子数组和
      Monaco Editor教程(八): 实现添加自定义命令,添加自定义菜单action功能
      一文带你走进【内存泄漏】
      习题 --- 双指针算法、离散化
      用户画像洞察分类模型 - 前端页面展示
      如何经营咖啡加盟店和独立咖啡店?用好国外成功经营咖啡馆四大法则
      〖Python 数据库开发实战 - Python与MySQL交互篇③〗- MySQL Connector的事务控制与异常处理
      PHP-面向服务器端的Web编程- print语句——直接打印内容,等效于echo “ 文本“
      没想到三天10KStar的营销利器MediaCrawler开源作者已经删库了
    • 原文地址:https://ask.csdn.net/questions/8121074