溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatisplus中QueryWrapper的使用方法有哪些

發布時間:2023-05-09 16:20:58 來源:億速云 閱讀:204 作者:iii 欄目:開發技術

MybatisPlus中QueryWrapper的使用方法有哪些

目錄

  1. 引言
  2. QueryWrapper簡介
  3. 基本查詢方法
  4. 復雜查詢方法
  5. 鏈式調用
  6. LambdaQueryWrapper
  7. 總結

引言

MyBatis-Plus(簡稱MP)是MyBatis的增強工具,在MyBatis的基礎上只做增強不做改變,簡化開發、提高效率。QueryWrapper是MyBatis-Plus中用于構建查詢條件的核心類之一,它提供了豐富的API來構建復雜的SQL查詢條件。本文將詳細介紹QueryWrapper的使用方法,幫助開發者更好地利用MyBatis-Plus進行數據庫操作。

QueryWrapper簡介

QueryWrapper是MyBatis-Plus中用于構建查詢條件的類,它繼承自AbstractWrapper,提供了豐富的API來構建SQL查詢條件。通過QueryWrapper,開發者可以方便地構建各種復雜的查詢條件,而不需要手動編寫SQL語句。

基本查詢方法

eq

eq方法用于構建等于條件,即column = value。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "張三");
List<User> userList = userMapper.selectList(queryWrapper);

ne

ne方法用于構建不等于條件,即column != value。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("name", "張三");
List<User> userList = userMapper.selectList(queryWrapper);

gt

gt方法用于構建大于條件,即column > value。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

ge

ge方法用于構建大于等于條件,即column >= value。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

lt

lt方法用于構建小于條件,即column < value。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

le

le方法用于構建小于等于條件,即column <= value。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.le("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

between

between方法用于構建區間條件,即column BETWEEN value1 AND value2。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 18, 30);
List<User> userList = userMapper.selectList(queryWrapper);

notBetween

notBetween方法用于構建不在區間內的條件,即column NOT BETWEEN value1 AND value2。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notBetween("age", 18, 30);
List<User> userList = userMapper.selectList(queryWrapper);

like

like方法用于構建模糊查詢條件,即column LIKE '%value%'。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "張");
List<User> userList = userMapper.selectList(queryWrapper);

notLike

notLike方法用于構建不包含的模糊查詢條件,即column NOT LIKE '%value%'。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notLike("name", "張");
List<User> userList = userMapper.selectList(queryWrapper);

likeLeft

likeLeft方法用于構建左模糊查詢條件,即column LIKE '%value'。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "三");
List<User> userList = userMapper.selectList(queryWrapper);

likeRight

likeRight方法用于構建右模糊查詢條件,即column LIKE 'value%'。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("name", "張");
List<User> userList = userMapper.selectList(queryWrapper);

isNull

isNull方法用于構建為空的條件,即column IS NULL。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("email");
List<User> userList = userMapper.selectList(queryWrapper);

isNotNull

isNotNull方法用于構建不為空的條件,即column IS NOT NULL。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("email");
List<User> userList = userMapper.selectList(queryWrapper);

in

in方法用于構建在某個集合內的條件,即column IN (value1, value2, ...)。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("age", Arrays.asList(18, 20, 22));
List<User> userList = userMapper.selectList(queryWrapper);

notIn

notIn方法用于構建不在某個集合內的條件,即column NOT IN (value1, value2, ...)。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notIn("age", Arrays.asList(18, 20, 22));
List<User> userList = userMapper.selectList(queryWrapper);

inSql

inSql方法用于構建子查詢條件,即column IN (sql)。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.inSql("id", "select id from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);

notInSql

notInSql方法用于構建不在子查詢結果中的條件,即column NOT IN (sql)。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notInSql("id", "select id from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);

groupBy

groupBy方法用于構建分組條件,即GROUP BY column。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.groupBy("age");
List<User> userList = userMapper.selectList(queryWrapper);

orderByAsc

orderByAsc方法用于構建升序排序條件,即ORDER BY column ASC。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("age");
List<User> userList = userMapper.selectList(queryWrapper);

orderByDesc

orderByDesc方法用于構建降序排序條件,即ORDER BY column DESC。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age");
List<User> userList = userMapper.selectList(queryWrapper);

having

having方法用于構建分組后的過濾條件,即HAVING condition。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.groupBy("age").having("count(age) > 1");
List<User> userList = userMapper.selectList(queryWrapper);

復雜查詢方法

and

and方法用于構建AND連接的條件,即condition1 AND condition2。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "張三").and(wrapper -> wrapper.gt("age", 18).lt("age", 30));
List<User> userList = userMapper.selectList(queryWrapper);

or

or方法用于構建OR連接的條件,即condition1 OR condition2。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "張三").or().eq("name", "李四");
List<User> userList = userMapper.selectList(queryWrapper);

nested

nested方法用于構建嵌套條件,即(condition)。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.nested(wrapper -> wrapper.eq("name", "張三").or().eq("name", "李四"));
List<User> userList = userMapper.selectList(queryWrapper);

apply

apply方法用于構建自定義SQL片段,即SQL片段。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("date_format(create_time, '%Y-%m-%d') = '2023-10-01'");
List<User> userList = userMapper.selectList(queryWrapper);

exists

exists方法用于構建存在子查詢的條件,即EXISTS (sql)。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.exists("select 1 from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);

notExists

notExists方法用于構建不存在子查詢的條件,即NOT EXISTS (sql)。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notExists("select 1 from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);

last

last方法用于在SQL語句的最后添加自定義SQL片段,即SQL片段。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.last("limit 10");
List<User> userList = userMapper.selectList(queryWrapper);

鏈式調用

QueryWrapper支持鏈式調用,可以在一行代碼中構建復雜的查詢條件。

List<User> userList = userMapper.selectList(new QueryWrapper<User>()
    .eq("name", "張三")
    .gt("age", 18)
    .lt("age", 30)
    .orderByAsc("age")
    .last("limit 10")
);

LambdaQueryWrapper

LambdaQueryWrapper是QueryWrapper的Lambda表達式版本,可以通過Lambda表達式來構建查詢條件,避免硬編碼字段名。

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "張三")
                  .gt(User::getAge, 18)
                  .lt(User::getAge, 30);
List<User> userList = userMapper.selectList(lambdaQueryWrapper);

總結

QueryWrapper是MyBatis-Plus中非常強大的查詢條件構建工具,通過它我們可以方便地構建各種復雜的SQL查詢條件。本文詳細介紹了QueryWrapper的基本查詢方法和復雜查詢方法,并展示了如何使用鏈式調用和LambdaQueryWrapper來簡化代碼。希望本文能幫助開發者更好地理解和使用MyBatis-Plus中的QueryWrapper。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女