• 注意防踩坑系列


    场景:
    根据多个条件查询,返回list集合数据

    代码:

    // 第1步:根据页面多个条件查询
    List<Base> list = userDao.queryOrders(queryParams);
    
    if(null == list)
    	return null;
    
    //第2步:有数据再追加其他信息
    List<Long> ids = new ArrayList<>(list.size());
    for (Base base : list){
    		ids.add(base.getId());
    }
    
    //第3步:根据ids使用in查询
    
    //第4步:将追加完信息的list返回
    

    现象:

    测试的时候少输入了某个条件,queryOrders查询有结果,代码正常,但是当输入这个条件,导致queryOrders没有查询结果时,报了sql错误,而且错误的sql是 【第3步:根据ids使用in查询】 这里导致的。

    排查:

    按自己之前的理解,queryOrders没有查询结果,
    if(null == list)
    return null;
    这里就会返回,不会执行下面的代码,但是结果非预期,于是打印list,观察

    List<Base> list = userDao.queryOrders(queryParams);
    logger.info("query result list size:" + (null == list ? "空" : list.size()));
    
    当输入查询条件,queryOrders没有查询结果时,控制台打印出的信息:
    2019-02-19 15:07:24,003 INFO(PurchasingRemoteSerciceImpl.java:123) - query result list size:0
    

    测试结果:
    mybatis查询没有数据时返回的list是空集合,即size=0 并不是null

    更改代码如下,查询正常:

    List<Base> list = userDao.queryOrders(queryParams);
    if(CollectionUtils.isEmpty(list))
    	return null;
    艾欧尼亚,昂扬不灭,为了更美好的明天而战(#^.^#)
  • 相关阅读:
    春秋战国时期灭了三个国家的陈国女人
    学历史有什么用?
    真正的奴才韩非
    深度学习的历史
    深度学习三十年
    图算法
    几种常见的查找算法
    数据结构之基于堆的优先队列
    几种常见的排序算法
    数据结构(背包、队列和栈)
  • 原文地址:https://www.cnblogs.com/lovelywcc/p/15634668.html
Copyright © 2020-2023  润新知