- 項目中碰到一個必須要使用動態SQL的地方,
想着在xml文件中進行一層一層的判斷太麻煩了,也不好理解,要是能在Java代碼中組織好SQL,進行查詢操作
QueryWrapper<object> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("組織好的SQL語句");
List<object> streamList = Mapper.selectList(queryWrapper);
這樣就可以在Java代碼中進行SQL語句的組織,然后傳入mybatis-plus進行查詢使用.
注意:
-
- 組織好的SQL語句一定是可執行的,mybatis不會進行語句校驗直接進行查詢操作
- 組織好的SQL語句中不能包含別名,不使用別名會不會報錯?經測試是不會的,mybatis自己會進行處理,所以語句中包含子查詢或者嵌套語句,需要去掉別名
-
使用QueryWrapper的時候,傳入的參數如果為空不進行SQL拼接的操作
QueryWrapper<object> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(“傳入的參數值”),“列值”,“傳入的值”);
List<object> streamList = Mapper.selectList(queryWrapper);
這樣設置完,傳入的參數如果為空的話,就不會拼接這條like語句,就可以達到效果