欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mybatis Example的Criteria使用时导致查询条件丢失

程序员文章站 2022-03-11 18:45:47
...

mybatis Example的Criteria使用时导致查询条件丢失

1. 问题描述

代码中使用example的Criteria时,使用如下格式,导致查询结果与实际结果不符

Example example=new Example();
example.createCriteria().andIdEqualTo(1);
example.createCriteria().andNameEqualTo('name');
example.createCriteria().andAgeEqualTo(20);

2 原因和解决方法

2.1 原因

原因很简单看下源码:


public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

oredCriteria是Example维护的一个Criteria的List,因此在使用上述写法时会导致只有第一个Criteria能够加入到Example的oredCriteria,所以才会导致最后执行SQL时只有第一个查询条件可以起作用。