Mybatis plus中的like查詢問題
Mybatis plus中like查詢問題
又談到瞭Mybatis plus瞭,真的很是痛心疾首,在做模糊查詢的時候出現瞭一個問題,版本還是2.0.8,我覺得大問題沒有小問題不斷吧!
上代碼
@MethodAnnot() public static List<VwUserRole> getVwUserRoleByList(VwUserRole vwUserRole){ return vwUserRoleService.selectList( new EntityWrapper<VwUserRole>(vwUserRole).like("username",vwUserRole.getUsername(), SqlLike.DEFAULT)); }
模糊查詢USER,講道理來說是沒有問題的,下面我們查一下這個SQL是什麼
SELECT id,username,del_flag AS delFlag FROM vw_user_role WHERE username='a' AND del_flag='0' AND (username LIKE '%a%')
應該一下就可以看的出來 這樣的查詢語法怎麼可能查詢的出來數據呢?我覺得這算是一個Mybatis plus的Bug的吧!
解決方法也很簡單,換個寫法
@MethodAnnot() public static List<VwUserRole> getVwUserRoleByList(VwUserRole vwUserRole){ EntityWrapper ew=new EntityWrapper(); ew.setEntity(new VwUserRole()); ew.eq("del_flag",'0'); ew.like("username",vwUserRole.getUsername(), SqlLike.DEFAULT); return vwUserRoleService.selectList(ew); }
我們看一下這樣查詢的SQL是什麼
SELECT id,username,del_flag AS delFlag FROM vw_user_role WHERE (del_flag = 0 AND username LIKE '%a%')
這樣是一點問題也沒有的哦,應該能看出問題在那裡吧?哈哈哈,不說瞭。
感覺還有好多地方會有坑等著我,踩一個坑記錄一下吧!!!
Mybatis plus中like使用說明
like的四種用法
like(boolean condition, String column, String value) like(String column, String value) like(boolean condition, String column, String value, SqlLike type) like(String column, String value, SqlLike type)
condition
是一些條件,符合才可加上你的sqlcolumn
為 數據庫屬性value
為 你傳入的值type
為 % 拼在那邊:SqlLike
為枚舉類
LEFT("left", "左邊%"), RIGHT("right", "右邊%"), CUSTOM("custom", "定制"), DEFAULT("default", "兩邊%");
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- MybatisPlus之likeRight的用法
- mybatis如何使用註解實現一對多關聯查詢
- mybatis映射和實際類型不一致的問題
- 解決mybatis #{}無法自動添加引號的錯誤
- Java面試題沖刺第九天–MyBatis