<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ![](https://cdn.zimug.com/wx-zimug.png) ## 一、條件構造器Wrapper Mybatis Plus為我們提供了如下的一些條件構造器,我們可以利用它們實現查詢條件、刪除條件、更新條件的構造。 ![](https://img.kancloud.cn/28/c4/28c4389ff5df64ed5c9fd24abed54caf_1249x646.png) 條件構造器用于給如下的Mapper方法傳參,通常情況下: * updateWrapper用于給update方法傳條件參數 * queryWrapper用于給delete和select方法傳參 ~~~ public interface BaseMapper<T> extends Mapper<T> { int delete(@Param("ew") Wrapper<T> wrapper); int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper); T selectOne(@Param("ew") Wrapper<T> queryWrapper); Integer selectCount(@Param("ew") Wrapper<T> queryWrapper); List<T> selectList(@Param("ew") Wrapper<T> queryWrapper); List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper); List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper); IPage<T> selectPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper); IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper); } ~~~ ### 舉例一:like 條件構造 ~~~ String name = "字母"; //name不為空 String email = ""; //email為空串 QueryWrapper<User> query = new QueryWrapper<>(); query.like(StringUtils.isNotEmpty(name), "name", name) //因為email為空串,該條件未生效 .like(StringUtils.isNotEmpty(email), "email", email); List<User> list = userMapper.selectList(query); list.forEach(System.out::println); ~~~ * QueryWrapper是查詢條件構造器,like是一種條件構造函數,還有很多的條件構造函數。請參考:[條件構造器](https://mp.baomidou.com/guide/wrapper.html#abstractwrapper) ![](https://img.kancloud.cn/f5/34/f534e1c72605258a82db102fed03ded6_973x162.png) * 幾乎所有的條件構造函數,都提供了condition參數實現動態SQL。也就是參數判斷是否返回true,如果返回false,該條件不成立。如`email=“”`,所以`.like(StringUtils.isNotEmpty(email), "email", email); ` 的條件不成立。 * 所以最終的執行SQL,如下(只有name LIKE條件,沒有email LIKE 條件): ~~~ SELECT id,name,age,email FROM user WHERE name LIKE %字母% ~~~ ### 舉例二:allEq條件構造器 * all表示所有 * Eq是equal的縮寫表示相等關系 ~~~ //構造條件 QueryWrapper<User> query = new QueryWrapper<>(); Map<String, Object> params = new HashMap<>(); params.put("name", "字母哥"); params.put("age", 18); params.put("email", null); // query.allEq(params,false); query.allEq((k, v) -> !k.equals("name"), params, false); List<User> list = userMapper.selectList(query); list.forEach(System.out::println); ~~~ * 第一個參數是過濾器(可選參數),lambda表達式表示(k, v) -> !k.equals("name"),參數的Key不能是name,所以`params.put("name", "字母哥");`這個查詢條件被過濾掉 * 第二個參數表示傳入所有的params查詢參數 * 第三個參數(可選參數),表示如果值為null是否按IS NULL查詢,false則忽略null列的查詢,所以`params.put("email", null);`這個查詢條件被過濾掉 最終執行的SQL如下: ~~~ SELECT id,name,age,email FROM user WHERE age = ? ~~~ ### 更多構造器使用方法總結 請參考:[官方文檔:條件構造器](https://mp.baomidou.com/guide/wrapper.html#abstractwrapper) ![](https://img.kancloud.cn/0f/8f/0f8fe8849a8181a0b1551342459df560_1314x1380.png) ## 二、lambda條件構造器 ### 舉例一: ~~~ // LambdaQueryWrapper<User> lambdaQ = new QueryWrapper<User>().lambda(); // LambdaQueryWrapper<User> lambdaQ = new LambdaQueryWrapper<>(); LambdaQueryWrapper<User> lambdaQ = Wrappers.lambdaQuery(); lambdaQ.like(User::getName, "字母") .lt(User::getAge, 18); List<User> list = userMapper.selectList(lambdaQ); ~~~ lambda條件構造器,最終執行SQL如下: ~~~ SELECT id,name,age,email FROM user WHERE name LIKE %字母% AND age < 18 ~~~ ### 舉例二: ~~~ List<User> list = new LambdaQueryChainWrapper<User>(userMapper) .likeRight(User::getName, "字母") .and(q -> q.lt(User::getAge, 40) .or() .isNotNull(User::getEmail) ) .list(); list.forEach(System.out::println); ~~~ lambda條件構造器,最終執行SQL如下: ~~~ SELECT id,name,age,email FROM user WHERE name LIKE '字母%' AND ( age < 18 OR email IS NOT NULL ) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看