1. 程式人生 > 其它 >如何動態拼接mybatisplus查詢條件中的and,or

如何動態拼接mybatisplus查詢條件中的and,or

技術標籤:mybatisplusmybatisplus

  1. 首先定義一個介面 這個介面會被所有的實體類實現
    public interface DaisyBasicPo extends Serializable {
    
    }
    
    
  2. 使用工具類將lambda表示式的引數暴露出來,這個時候我們就可以愉快的隨意拼接sql了
    public class DaisyWrapperUtils {
    
        /**
         * 將2個wrapper 拼接到一起
         * a =1 and (b =1 or c = 1)
         *
         * @param wrapper      外部的wrapper
         * @param <PO>
         */
    public static <PO extends DaisyBasicPo> QueryWrapper innerAnd(QueryWrapper<PO> wrapper) { List<QueryWrapper> queryWrappers = new ArrayList<>(); // 新增一個and 修飾符 wrapper.and(w -> { queryWrappers.add(w); }); return queryWrappers.
    get(0); } /** * 將2個wrapper 拼接到一起 * a =1 or (b = 1 and c = 1) * * @param wrapper 外部的wrapper * @param <PO> */ public static <PO extends DaisyBasicPo> QueryWrapper innerOr(QueryWrapper<PO> wrapper) { List<QueryWrapper> queryWrappers =
    new ArrayList<>(); // 新增一個and 修飾符 wrapper.or(w -> { queryWrappers.add(w); }); return queryWrappers.get(0); } }