<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      MyBatisPlus-QueryWrapper多條件查詢以及修改

      gt、ge、lt、le、isNull、isNotNull

      • 大于 >
      • 例: gt("age", 18) → age > 18
      • ge 大于等于 >=
      • 例: ge("age", 18) → age >= 18
      • lt 小于 <
      • 例: lt("age", 18) → age < 18
      • le 小于等于 <=
      • 例: le("age", 18) → age <= 18
      • isNUll 字段 IS NULL
      • 例: isNull("name") → name is null
      • isNotNull 字段 IS NOT NULL
      • 例: isNotNull("name") → name is not null
      java
      @Test
      public void queryWrapperOne() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper.
                  isNull("name")
                  .ge("age", 23)
                  .isNotNull("email");
      
          // 邏輯刪除
          int result = userMapper.delete(queryWrapper);
          System.out.println(result);
      
          // 最終的語句為:UPDATE user SET deleted=1 WHERE deleted=0 AND name IS NULL AND age >= ? AND email IS NOT NULL
      }

      eq、ne

      • eq 等于 =
      • 例: eq("name", "老王") → name = '老王'
      • ne 不等于 <>
      • 例: ne("name", "老王") → name <> '老王'
      java
      @Test
      public void queryWrapperTwo() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper.eq("name", "BNTang");
      
          // selectOne:返回的是一條記錄,當出現多條時會報錯
          User user = userMapper.selectOne(queryWrapper);
          System.out.println(user);
      }

      between、notBetween

      • BETWEEN 值1 AND 值2
      • 例: between("age", 18, 30) → age between 18 and 30
      • NOT BETWEEN 值1 AND 值2
      • 例: notBetween("age", 18, 30) → age not between 18 and 30
      java
      @Test
      public void queryWrapperThree() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper.between("age", 20, 30);
      
          Integer count = userMapper.selectCount(queryWrapper);
          System.out.println(count);
      }

      allEq

      • allEq 全部 eq(或個別 isNull)

      個別參數說明:

      paramskey 為數據庫字段名, value 為字段值

      如果想表示 null isNull,則在 value 取值的時候傳入一個 null, 為 null 時調用 isNull 方法, 為false時則忽略valuenull的,也就是不拼接 value 為 null 的查詢條件字段

      • 例1: allEq({id:1,name:"老王",age:null})id = 1 and name = '老王' and age is null
      • 例2: allEq({id:1,name:"老王",age:null}, false)id = 1 and name = '老王'
      java
      @Test
      public void queryWrapperFour() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
      
          Map<String, Object> queryParamsMap = new HashMap<>();
          queryParamsMap.put("id", 1373266771933462530L);
          queryParamsMap.put("name", "BNTang");
          queryParamsMap.put("age", 23);
      
          queryWrapper.allEq(queryParamsMap);
          List<User> users = userMapper.selectList(queryWrapper);
          users.forEach(System.out::println);
      }

      個別參數說明

      filter: 過濾函數, 是否允許字段傳入比對條件中
      params 與 nullIsNull 同上

      • 例1: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null})name = '老王' and age is null
      • 例2: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null}, false)name = '老王'

      如上圖可看到,只添加了一個 id 查詢的條件因為我寫的過濾條件為要包含 i 這個字符串,所以只有第一個 key, value 包含了所以就只添加了 id

      like、notLike、likeLeft、likeRight

      • LIKE '%值%'
      • 例: like("name", "王")name like '%王%'
      • NOT LIKE '%值%'
      • 例: notLike("name", "王")name not like '%王%'
      • LIKE '%值'
      • 例: likeLeft("name", "王")name like '%王'
      • LIKE '值%'
      • 例: likeRight("name", "王")name like '王%'
      java
      @Test
      public void queryWrapperFive() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper
                  .notLike("name", "BNTang")
                  .likeRight("email", "zq");
      
          // 返回值是Map列表
          List<Map<String, Object>> users = userMapper.selectMaps(queryWrapper);
          users.forEach(System.out::println);
      }

      in、notIn、inSql、notinSql、exists、notExists

      • 字段 IN (value.get(0), value.get(1), ...)
      • 例: in("age",{1,2,3})age in (1,2,3)
      • 字段 NOT IN (value.get(0), value.get(1), ...)
      • 例: notIn("age",{1,2,3})age not in (1,2,3)
      • 字段 IN ( sql語句 )
      • 例: inSql("age", "1,2,3,4,5,6")age in (1,2,3,4,5,6)
      • 例: inSql("id", "select id from table where id < 3")id in (select id from table where id < 3)
      • 字段 NOT IN ( sql語句 )
      • 例: notInSql("age", "1,2,3,4,5,6")age not in (1,2,3,4,5,6)
      • 例: notInSql("id", "select id from table where id < 3")id not in (select id from table where id < 3)
      • 拼接 EXISTS ( sql語句 )
      • 例: exists("select id from table where age = 1")exists (select id from table where age = 1)
      • 拼接 NOT EXISTS ( sql語句 )
      • 例: notExists("select id from table where age = 1")not exists (select id from table where age = 1)
      java
      @Test
      public void queryWrapperSix() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper.in("id", 1, 2, 3);
          queryWrapper.inSql("id", "select id from user where id < 3");
      
          // 返回值是Object列表
          List<Object> users = userMapper.selectObjs(queryWrapper);
          users.forEach(System.out::println);
      }

      or、and

      • 拼接 OR

      注意事項:

      主動調用or表示緊接著下一個方法不是用and連接!(不調用or則默認為使用and連接)

      • 例: eq("id",1).or().eq("name","老王")id = 1 or name = '老王'
      • OR 嵌套
      • 例: or(i -> i.eq("name", "李白").ne("status", "活著"))or (name = '李白' and status <> '活著')
      • AND 嵌套
      • 例: and(i -> i.eq("name", "李白").ne("status", "活著"))and (name = '李白' and status <> '活著')
      java
      @Test
      public void queryWrapperSeven() {
          // 修改值
          User user = new User();
          user.setAge(99);
          user.setName("BNTang6666");
      
          // 修改條件
          UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
          userUpdateWrapper
                  .like("name", "BNTang")
                  .or()
                  .between("age", 20, 30);
          int result = userMapper.update(user, userUpdateWrapper);
          System.out.println(result);
      }

      嵌套 or、嵌套 and

      java
      @Test
      public void queryWrapperEight() {
          // 修改值
          User user = new User();
          user.setAge(99);
          user.setName("BNTang6666");
      
          // 修改條件
          UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
          userUpdateWrapper
                  .like("name", "A")
                  .or(i -> i.eq("name", "BNTang6666").ne("age", 20));
      
          int result = userMapper.update(user, userUpdateWrapper);
          System.out.println(result);
      }

      orderBy、orderByDesc、orderByAsc

      • 排序:ORDER BY 字段, ...
      • 例: orderBy(true, true, "id", "name")order by id ASC,name ASC
      • 排序:ORDER BY 字段, ... DESC
      • 例: orderByDesc("id", "name")order by id DESC, name DESC
      • 排序:ORDER BY 字段, ... ASC
      • 例: orderByAsc("id", "name")order by id ASC,name ASC
      java
      @Test
      public void queryWrapperNine() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper.orderByDesc("id");
      
          List<User> users = userMapper.selectList(queryWrapper);
          users.forEach(System.out::println);
      }

      last

      • 無視優化規則直接拼接到 sql 的最后

      注意事項:

      只能調用一次, 多次調用以最后一次為準有 sql 注入的風險, 請謹慎使用

      • 例: last("limit 1")
      java
      @Test
      public void queryWrapperTen() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
      
          queryWrapper.last("limit 1");
          List<User> users = userMapper.selectList(queryWrapper);
          users.forEach(System.out::println);
      }

      指定要查詢的列

      java
      @Test
      public void queryWrapperEleven() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper.select("id", "name", "age");
          
          List<User> users = userMapper.selectList(queryWrapper);
          users.forEach(System.out::println);
      }

      set、setSql

      • SQL SET 字段
      • 例: set("name", "老李頭")
      • 例: set("name", "")→數據庫字段值變為空字符串
      • 例: set("name", null)→據庫字段值變為null
      • 設置 SET 部分 SQL
      • 例: setSql("name = '老李頭'")
      java
      @Test
      public void queryWrapperTwelve() {
          // 修改值
          User user = new User();
          user.setAge(10);
      
          // 修改條件
          UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
          userUpdateWrapper
                  .like("name", "A")
                  // 除了可以查詢還可以使用set設置修改的字段
                  .set("name", "BNTang")
                  // 可以有子查詢
                  .setSql(" email = '303158131@qq.com'");
      
          int result = userMapper.update(user, userUpdateWrapper);
          System.out.println(result);
      }

      posted @ 2022-02-25 14:53  jevan  閱讀(772)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲综合色成在线播放| 丰满人妻跪趴高撅肥臀| 亚洲AV无码久久精品日韩| 妺妺窝人体色WWW看人体| 性人久久久久| 日韩成人一区二区二十六区| 国产精品亚洲av三区色| 亚洲熟女乱色综一区二区| 人人妻人人做人人爽夜欢视频| 国产精品久久久久久久久软件| 久久久天堂国产精品女人| 亚洲av第三区国产精品| 亚洲精品日产AⅤ| 亚洲精品一区二区美女| 国产肥妇一区二区熟女精品| 亚洲国产午夜精品福利| 中文字幕无码免费不卡视频| 国产精品成人网址在线观看| 色窝窝免费一区二区三区| 欧美牲交a欧美牲交aⅴ免费真| 久热这里有精品视频在线| 亚洲日韩性欧美中文字幕| 亚洲av片在线免费观看| 中文字幕有码日韩精品| 日韩精品一区二区在线看| 成人3D动漫一区二区三区| 国产亚洲色视频在线| 久久精品蜜芽亚洲国产av | 国产欧美日韩亚洲一区二区三区| 边添小泬边狠狠躁视频| 国产精品深夜福利免费观看| 亚洲gv天堂无码男同在线观看| 国产精品爽爽久久久久久竹菊| 日韩av综合免费在线| 五月丁香六月狠狠爱综合| 在线播放深夜精品三级| 国产国亚洲洲人成人人专区| 亚洲精品一二三四区| 国内熟妇人妻色在线视频 | 国产午夜精品在人线播放| 欧美午夜精品久久久久久浪潮|