關於Mybatis的Example(and ,or )應用


近期的一個項目中遇到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);

  

這是我在項目中遇到的,正好能解決我的問題。感覺還有更好的方法,正在查找嘗試,這種方法簡單的還可以,復雜的就吃力了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM