You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MyBatis查询无命中数据时会返回什么结果?

MyBatis查询无命中数据时的返回值规则
  • 返回List、Set、Collection系列集合类型时,查询无命中永远不会返回null,MyBatis会在底层完成空集合初始化,返回长度为0的对应集合实例,开发时不需要额外对集合结果做null判断,直接遍历、调用流式API都不会触发空指针。
  • 返回单个自定义POJO、包装类(Integer/Long/String等)、单条结果接收的Map类型时,查询无命中会直接返回null,这类场景必须做非空校验,否则直接调用对象方法会抛出空指针异常。
  • 返回值为Java基本数据类型(int/long/boolean等,非包装类)时,查询无命中会直接抛出运行时异常——因为基本类型无法接收null值,实际业务开发中尽量不要用基本类型作为查询方法的返回值,避免无数据场景报错。

常见误区:不需要为集合类型的返回值额外写判空兜底逻辑,MyBatis本身已经处理了无数据时的集合初始化,冗余判空反而会增加不必要的代码量。

实际Mapper接口写法参考:

public interface UserMapper {
    // 无命中返回空ArrayList,不会为null
    List<User> selectByCondition(UserQuery query);

    // 无命中返回null
    User selectByPrimaryKey(Long id);

    // 错误写法:无命中时会抛异常
    int selectValidUserCount();

    // 正确写法:无命中返回null,可手动处理为0
    Integer selectValidUserCountCorrect();
}

内容的提问来源于stack exchange,提问作者Michael Hsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:21:30