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

使用MyBatis从Oracle读取数据时遭遇Null Pointer Exception求助

解决MyBatis读取Oracle数据时的NullPointerException问题

嗨,针对你遇到的空指针异常,结合你给出的XML映射语句和接口代码,我整理了几个常见的排查方向和解决方案,你可以逐一检查:

1. 先确认Mapper接口方法和XML映射ID完全匹配

你得确保db.java里的方法名和XML中<select>标签的id完全一致,包括大小写哦(MyBatis的ID是区分大小写的,哪怕Oracle的表名是大写)。比如你的接口应该是这样的:

public interface DbMapper {
    // 和XML里的id一一对应
    List<String> selectItemPartNumberWithEco();
    List<String> selectItemPartNumberWithoutEco();
}

要是方法名和ID对不上,MyBatis找不到对应的查询语句,调用的时候很可能就会触发空指针(或者更明确的绑定异常,但有时候代理对象处理不好就会出现NPE)。

2. 检查接口返回值类型是否合理

你的XML里resultType="String",但如果这个查询可能返回多条数据,接口方法必须返回List<String>,不能是单个String。要是定义成单个String,查询返回多条会直接抛TooManyResultsException,返回零条的话会返回null,这时候你直接用这个返回值就会踩空指针的坑。

如果确实只需要单个结果,可以在SQL里加个限制:

<select id="selectItemPartNumberWithEco" resultType="String">
    SELECT ITEM_PART_NUMBER 
    from CIS_ITEM_AGILE_ECO_DATA_TBL 
    WHERE ECO_NUMBER IS NOT NULL
    AND ROWNUM <= 1 <!-- Oracle的行限制写法 -->
</select>

同时接口方法写成String selectItemPartNumberWithEco();,但调用的时候一定要记得判空!

3. 确认Mapper接口有没有被正确注入

如果你用的是Spring或者Spring Boot:

  • 先看看Mapper接口上有没有加@Mapper注解;
  • 或者有没有在启动类/配置类上加@MapperScan("你的Mapper所在包路径"),让Spring能扫描到它;
  • 再检查注入Mapper的地方,比如用@Autowired或者构造注入的时候,有没有确保Mapper实例不是null。要是注入失败,调用方法肯定会空指针。

4. 检查XML映射文件有没有被MyBatis加载

  • 如果是用传统的MyBatis配置文件(比如mybatis-config.xml),得确认里面注册了你的db.xml:
<mappers>
    <mapper resource="你的db.xml所在路径,比如mapper/db.xml"/>
</mappers>
  • 要是Spring Boot的话,看看application.properties或者application.yml里有没有配置mybatis.mapper-locations指向你的XML文件,比如:
mybatis.mapper-locations=classpath:mapper/*.xml

要是XML没被加载,MyBatis找不到查询语句,调用的时候也会出问题。

5. 排查查询结果里的空值

虽然你加了ECO_NUMBER IS NOT NULL的条件,但ITEM_PART_NUMBER字段本身可能有null值哦。如果接口返回的是List<String>,列表里的元素可能存在null,后续代码遍历的时候没判空,也会触发空指针。这种情况可以在SQL里再加个过滤:

<select id="selectItemPartNumberWithEco" resultType="String">
    SELECT ITEM_PART_NUMBER 
    from CIS_ITEM_AGILE_ECO_DATA_TBL 
    WHERE ECO_NUMBER IS NOT NULL
    AND ITEM_PART_NUMBER IS NOT NULL <!-- 过滤掉字段为空的记录 -->
</select>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:29:10