提示:MyBatis-Plus简介


QueryWrapper

提示:这个又叫过滤

QueryWrapper对象方法描述
eq等于 =
ne不等于 <>
gt大于 >
ge大于等于 >=
lt小于 <
le小于等于 <=
betweenBETWEEN 值1 AND 值2(例: between(“date”, “2022-01-01”, “2022-12-31”))
likeLIKE ‘%值%’
isNull字段 IS NULL
in字段 IN (例:in(“color”, {“red”, “blue”, “green”}))
orderBy排序(例:orderBy(false, false, “price”, “weight”))【先按照“price”降序排列,如果“price”相同,则按照“weight”升序排列】

用法

@Test  
public void testQueryWrapperExample() {  
    QueryWrapper<User> qw = new QueryWrapper<>();  
    qw.eq("username", "Tom");  
    qw.like("email", "qq.com");  
    qw.gt("age", 30);  
      
    // 多条件查询  
    List<User> userList = userMapper.selectList(qw);  
    for (User user : userList) {  
        System.out.println(user);  
    }  
      
    // 多条件更新  
    // int result = userMapper.update(new User(null, "newName", "newEmail"), qw);  
    // 多条件删除  
    // int result = userMapper.delete(qw);  
}

这段代码是一个Java测试方法,它使用QueryWrapper来构建并执行一个查询。QueryWrapper是MyBatis Plus中的一个功能,它可以更方便地构建查询条件。

这段代码的主要步骤如下:

  1. 创建一个QueryWrapper对象(qw),并为它指定一个类型,即User。
  2. 使用eq()方法设置一个等于条件,即"username"字段的值必须等于"Tom"。
  3. 使用like()方法设置一个模糊匹配条件,即"email"字段的值必须包含"qq.com"这个子串。
  4. 使用gt()方法设置一个大于条件,即"age"字段的值必须大于30。
  5. 使用这些查询条件,调用userMapper的selectList()方法执行查询,获取满足条件的User对象列表。
  6. 遍历查询结果,将每个User对象打印出来。

这个代码中还有两行注释掉的代码,它们分别用于多条件更新和多条件删除操作。在这两个操作中,QueryWrapper同样被用来构建查询条件。

在这个例子中,使用了QueryWrapper来构建一个查询条件,该条件包括用户名等于"Tom",邮箱包含"qq.com",并且年龄大于30。然后使用这个查询条件调用userMapper的selectList()方法执行查询,获取满足条件的User对象列表。最后遍历查询结果,将每个User对象打印出来。注释的两行代码分别用于多条件更新和多条件删除操作。

UpdateWrapper

UpdateWrapper用于update时非常方便,因为它封装了set方法,可以将更新数据使用set方法传入。这样在更新时只需传入一个UpdateWrapper对象即可。

UpdateWrapper对象方法用法
set用于设置要更新的字段和对应的值
gt用于设置大于条件
lt用于设置小于条件
like用于设置模糊匹配条件

用法

@Test
public void testUpdateWrapper() {
//创建一个UpdateWrapper对象,用于构建更新操作的查询条件。
UpdateWrapper uw = new UpdateWrapper();
//字段是"name",值是"Tom"。
uw.set("name", "Tom");
//使用set方法设置另一个字段"age"的值为35。
uw.set("age", 35);
//使用gt方法设置一个大于条件,即"salary"字段的值必须大于3000。
uw.gt("salary", 3000);
//使用lt方法设置一个小于条件,即"salary"字段的值必须小于10000。
uw.lt("salary", 10000);
//使用like方法设置一个模糊匹配条件,即"name"字段的值必须以"T"开头。
uw.like("name", "T%");
int result = employeeMapper.update(null, uw);
System.out.println(result);
}

使用uw.set("","")的方式添加更新数据,这样在deptMapper.update(null, uw);中只需要传递一个uw即可。

生成的SQL语句如下:

UPDATE employee SET name=?,age=? WHERE (salary > ? AND salary < ? AND name LIKE ?)
#这个SQL语句表示在"employee"表中选择那些"salary"字段的值在3000和10000之间并且"name"字段以"T"开头的记录,并将它们的"name"和"age"字段更新为新的值。在更新操作中,"name"字段将被设置为"Tom","age"字段将被设置为35。
Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐