项目刚启动时,首页会有三个地方访问这个接口,然后其中一个(随机)会报错

探讨项目重启后,前端首请求导致后端空指针异常现象,深入分析MyBatis配置及XML映射文件,排查SQL执行逻辑错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BUG是这样的,重启项目之后,前端第一次请求,我后台(偶尔)就崩了,报空指针,前端刷新一下发送第二次请求,我这里又都好了没有了空指针,DEBUG过了,每次参数都是有的,不会有参数不存在的问题,如果是我SQL代码问题,那第二次请求肯定也是空,所以排除了
报错信息为
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.NullPointerException

下面是代码

@RestController
@RequestMapping(value = {“home”})
public class HomeController {
@Resource
private SuperviseDynamicService superviseDynamicService;

/**
 * 查询监管动态管理列表
 */
@RequiredToken(value = false)
@RequestMapping(value = {"getAll"},method = RequestMethod.GET)
public ResponseBean selectAll(String name, String type , Integer day,Integer year, PageInfo page){
    List<Map<String, String>> resList = superviseDynamicService.selectAllSuperviseDynamic(name, type, day, year, page);
    return ResponseBean.page((Page) resList, 200, "success");
}

}
@Service
public class SuperviseDynamicService extends BaseService<SuperviseDynamic,SuperviseDynamicDAO> {

@Resource
private SuperviseDynamicDAO dynamicDAO;

/**
 * 查询监管动态列表
 * @param name
 * @param type
 * @param day
 * @param page
 * @return
 */
public List<Map<String,String>> selectAllSuperviseDynamic(String name, String type, Integer day, Integer year,PageInfo page) {
    List<Map<String,String>> list = dynamicDAO.selectAllSuperviseDynamic(name,type,day,year,page.toRowBounds());
    return list;
}

}
@Repository
public interface SuperviseDynamicDAO extends Mapper{
List<Map<String,String>> selectAllSuperviseDynamic(@Param(value = “name”) String name,
@Param(value = “type”)String type,
@Param(value = “day”)Integer day,
@Param(value = “year”)Integer year,RowBounds rowBounds);
}

<?xml version="1.0" encoding="UTF-8"?>
<!-- 查询认证公司列表 -->
<select id="selectAllSuperviseDynamic" resultType="java.util.Map">
  select id,title,d_type as dType, create_time as createTime
  from supervise_dynamic
    <where>
        state=1
        <if test="null != name">
       AND title like '%${name}%'
        </if>
        <if test="null != type">
            AND  d_type =#{type}
        </if>
        <if test="null != day">
            AND  DATE_SUB(CURDATE(), INTERVAL #{day} DAY) &lt;= update_time
        </if>
        <if test="null != year">
            AND  DATE_SUB(CURDATE(), INTERVAL 365 DAY) &gt; update_time
        </if>

    </where>
    ORDER BY update_time DESC
</select>
项目刚启动时,首页会有三个地方访问这个接口,然后其中一个(随机)会报错 BUG是这样的,重启项目之后,前端第一次请求,我后台(偶尔)就崩了,报空指针,前端刷新一下发送第二次请求,我这里又都好了没有了空指针,DEBUG过了,每次参数都是有的,不会有参数不存在的问题,如果是我SQL代码问题,那第二次请求肯定也是空,所以排除了
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值