欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis Example And與Or混合使用的實例

 更新時間:2021年12月23日 14:37:35   作者:看!蝸牛在漂移  
這篇文章主要介紹了MyBatis Example And與Or混合使用的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MyBatis Example And與Or混合使用

(條件1 and 條件2) or ( 條件3 and 條件4)

      MemberExample example = new MemberExample();
      MemberExample.Criteria c1 = example.createCriteria();
                          c1.andOne(A).andTwo(B);
      
      MemberExample.Criteria c2 = example.createCriteria();
                          c2.andThree(C).andFour(D); 
      example.or(c2);  

條件1 and (條件2 or 條件3)

思路 : 分拆 : A and ( B or C ) ==> ( A and B ) or ( A and C )

   MemberExample example = new MemberExample();
      MemberExample.Criteria c1 = example.createCriteria();
                          c1.andOne(A).andTwo(B);
      
      MemberExample.Criteria c2 = example.createCriteria();
                          c2.andOne(A).andThree(C); 
      example.or(c2);   

MyBatis Example 處理And、Or關系方法

1.( xx and xx) or ( xx and xx)

實例代碼:

BaUserExample baUserExample = new BaUserExample(); 
Criteria criteria1 = baUserExample.createCriteria();
criteria1.andOrgIdEqualTo("1");
criteria1.andDeptIdEqualTo("1");
   
Criteria criteria2 = baUserExample.createCriteria();
criteria2.andUserNameEqualTo("name");
criteria2.andEmailLike("%test@%");
   
baUserExample.or(criteria2); 
userMapper.countByExample(baUserExample);

執(zhí)行的sql語句:

==>  Preparing: select count(*) from ba_user WHERE ( org_id = ? and dept_id = ? ) or( user_name = ? and email like ? )

2.xx and ( xx or xx)

暫時沒找到直接的sql語句構造方法,但是經過轉換還是可以實現的

根據邏輯表達式可以知道 a and ( b or c ) = ( a and b) or ( a and c )

所以就轉變成第一種方法

舉個例子,假如想要實現

select count(*) from ba_user WHERE userName like ? and ( dept_id is null or dept_id <>? )

可以轉化為

select count(*) from ba_user WHERE (userName like ? and  dept_id is null ) or ( userName like ? and  dept_id <>? )

實例代碼:

BaUserExample baUserExample = new BaUserExample(); 
Criteria criteria1 = baUserExample.createCriteria();
criteria1.andUserNameLike("%name%");
criteria1.andDeptIdIsNull();
   
Criteria criteria2 = baUserExample.createCriteria();
criteria2.andUserNameLike("%name%");
criteria2.andDeptIdNotEqualTo("1");
   
baUserExample.or(criteria2); 
userMapper.countByExample(baUserExample);

執(zhí)行的sql語句:

==>  Preparing: select count(*) from ba_user WHERE ( user_name like ? and dept_id is null ) or( user_name like ? and dept_id <> ? ) 

這算是一種取巧的方法吧,對于這樣的問題可以自己編寫mapper.xml文件,或者在代碼里面過濾,還有一種思路就是修改Criteria的代碼實現and和or功能調換(還沒嘗試過)。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Java引用類型的參數也是值傳遞

    詳解Java引用類型的參數也是值傳遞

    這篇文章主要介紹了Java引用類型的參數也是值傳遞,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • shiro攔截認證的全過程記錄

    shiro攔截認證的全過程記錄

    Apache?Shiro是一個強大且易用的Java安全框架,執(zhí)行身份驗證、授權、密碼和會話管理,下面這篇文章主要給大家介紹了關于shiro攔截認證的相關資料,需要的朋友可以參考下
    2021-11-11
  • SpringBoot 普通類調用Bean對象的一種方式推薦

    SpringBoot 普通類調用Bean對象的一種方式推薦

    這篇文章主要介紹了SpringBoot 普通類調用Bean對象的一種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java實現文件保存到本地的方法

    java實現文件保存到本地的方法

    本篇文章主要介紹了java實現文件保存到本地的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • springboot圖片驗證碼功能模塊

    springboot圖片驗證碼功能模塊

    用戶登錄幾乎是一個線上系統必不可少且使用相對比較頻繁的一個模塊,為了防止惡意暴力嘗試,防止洪水攻擊、防止腳本自動提交等,驗證碼是一個較為便捷且行之有效的預防手段,這篇文章主要介紹了springboot圖片驗證碼功能模塊,需要的朋友可以參考下
    2022-04-04
  • springboot開發(fā)擴展springmvc實現解析

    springboot開發(fā)擴展springmvc實現解析

    這篇文章主要介紹了springboot開發(fā)擴展springmvc實現解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 詳解Java反射創(chuàng)建對象

    詳解Java反射創(chuàng)建對象

    今天帶大家學習Java的基礎知識,文中對Java反射創(chuàng)建對象作了非常詳細的介紹及代碼示例,對正在學習Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • 深入淺出的講解Java關鍵字final的作用

    深入淺出的講解Java關鍵字final的作用

    final是Java中非常常見的一個關鍵字,可以說每天都在使用它,雖然常見,但卻也不見得都那么顯而易見,今天就來研究一下final,以加深對它的理解和更合理的運用,需要的朋友可以參考下
    2023-06-06
  • 通過jstack分析解決進程死鎖問題實例代碼

    通過jstack分析解決進程死鎖問題實例代碼

    這篇文章主要介紹了通過jstack分析解決進程死鎖問題實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • java使用httpclient 發(fā)送請求的示例

    java使用httpclient 發(fā)送請求的示例

    HttpClient 是Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,并且它支持 HTTP 協議最新的版本和建議,這篇文章主要介紹了java使用httpclient 發(fā)送請求的示例,需要的朋友可以參考下
    2023-10-10

最新評論