近期的一個項目中遇到Mybatis的Example的and or 的應用,感覺有必要記錄一下(個人見解,有問題請指出。謝謝)
1.在Example中的每一個Criteria相當於一個括號,把里面的內容當成一個整體
where (Userid = "11" and pointname = "22")
BasePointsExample.Criteria criteria1 = example.createCriteria();
criteria1.andUseridEqualTo("11");
criteria1.andPointnameLike("22");
2.在Criteria中沒有直接的or的構造方法(至少我不知道)所以碰到一下where 后 and or的連用的話會有點麻煩
2.1 where (條件1 and 條件2) or ( 條件3 and 條件4)
BasePointsExample.Criteria criteria1 = example.createCriteria();
criteria1.andUseridEqualTo('11');
criteria1.andPointnameLike(StringUtil.concatlike('22'));
BasePointsExample.Criteria criteria2 = example.createCriteria();
criteria2.andUsernameEqualTo('33');
criteria2.andPointcontentLike(StringUtil.concatlike('44'));
example.or(criteria2);
2.2 where 條件1 and (條件2 or 條件3) 這是我碰到的問題,在網上看到一種拆分的方法感覺很好
A and ( B or C ) ==> ( A and B ) or ( A and C )
BasePointsExample.Criteria criteria1 = example.createCriteria();
criteria1.andUseridEqualTo('11');
criteria1.andPointnameLike(StringUtil.concatlike('22'));
BasePointsExample.Criteria criteria2 = example.createCriteria();
criteria2.andUseridEqualTo('11');
criteria2.andPointcontentLike(StringUtil.concatlike('33'));
example.or(criteria2);
這是我在項目中遇到的,正好能解決我的問題。感覺還有更好的方法,正在查找嘗試,這種方法簡單的還可以,復雜的就吃力了。
