当前位置: 首页 > 知识库问答 >
问题:

MyBatis同时返回emptyList()和null

艾志尚
2023-03-14

以下是我的myBatis请求,它应该返回一个列表:

@Mapper
public interface ClientAccessMapper {
    List<ClientAccess> findByClientAndPartnerWithAutoRenewal(@Param("clientId") Long clientId,
                                                             @Param("partner") String partner,
                                                             @Param("autoRenewal") Boolean autoRenewal);
}

<select id="findByClientAndPartnerWithAutoRenewal" resultMap="ClientAccessResult">
        select * from client_access
        where client_id = #{clientId}
            and partner = #{partner}
        <if test="autoRenewal != null">
            and auto_renewal = #{autoRenewal}
        </if>
        order by id
    </select>

有时请求返回“null”而不是空列表。得到后,我有一个检查块:

final List<ClientAccess> clientAccesses = clientAccessMapper.findByClientAndPartnerWithAutoRenewal(client, partner, true);
        if (clientAccesses.isEmpty()) {/**/}

我的clientaccesses.isempty()有时会生成NPE,因为null而不是大小为0的列表。什么会是问题?

共有1个答案

田德运
2023-03-14

可能是空指针。推荐用途:

CollectionUtils.isEmpty(priceList)
 类似资料:
  • 我配置了一个类似以下内容的语句(在这里进行解释,前面没有实际的代码): 就像现在一样,应用程序代码通过调用mybatis/postgres来生成本身以获取下一个序列值,然后将其传递给。 我想重构此代码,以便在中创建。据我所知,一种方法是将语句中的替换为。另一种方法是使用: 我希望在这两种情况下都能得到id的值作为返回值;是否生成了新记录和新序列id,或者如果存在冲突/更新,则为现有id。如何执行此

  • 我有如下疑问, 我通过如下传递值来调用服务方法。 但它回来了。。。[] 帮助我为什么我没有得到值,而是得到了空列表。 附言:我检查了日志,它的语句是创建的,没有任何问题

  • 本文向大家介绍Mybatis中返回Map的实现,包括了Mybatis中返回Map的实现的使用技巧和注意事项,需要的朋友参考一下 在Mybatis中,我们通常会像下边这样用: 返回一个结果 返回多个结果(其实这个和上边一样,只不过是查询条件的控制而已) 我们只要将上边的resultType改为java.util.HashMap,这会有生成下边这样 上这结果就是说,以User类的属性名为key,属性值

  • 我在mybatis中使用了下面的插入查询。在ibatis中,相同的查询seq_consumer_id.nextval返回到java中的调用方法,并将其插入到consumer_id列中。但是在mybatis中,方法的返回值始终为1(我假设它是插入行的编号),尽管consumer_id列是从序列中正确更新的。我们不能生成密钥,插入它并将其返回到mybatis中的java类吗?

  • 原文是这样的: 这确实令人惊讶,但最终明白了(嗯,至少我想我明白了)为什么会这样发生。 现在,我将第二个更改为: 如果我遗漏了一些明显的东西,或者我的问题是愚蠢的,让我提前说声对不起。还有谢谢你!

  • 我在mybatis文档和inet中搜索过。但找不到解决方案。 我的目标是:从myBatis动态SQL选择返回阉羊 不创建pojo作为数据库表的表示。 它应该看起来像: 1) 动态SQL: 2) 我在动态选择中输入的参数: } 3) 返回映射的方法: