日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis example处理and、or关系的方法

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis example处理and、or关系的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??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);

執行的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);


執行的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功能調換(還沒嘗試過)。
?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mybatis example处理and、or关系的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。