mybatisplus中lambdaQuery()与lambdaUpdate()怎么使用

发布时间:2022-09-28 14:20:56 作者:iii
来源:亿速云 阅读:1786

MyBatis-Plus中lambdaQuery()与lambdaUpdate()怎么使用

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。其中,lambdaQuery()lambdaUpdate() 是 MyBatis-Plus 提供的两个非常强大的功能,能够通过 Lambda 表达式的方式来进行条件查询和更新操作。本文将详细介绍这两个方法的使用方式。

1. 环境准备

在开始之前,确保你已经引入了 MyBatis-Plus 的依赖。如果你使用的是 Maven 项目,可以在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

2. lambdaQuery() 的使用

lambdaQuery() 是 MyBatis-Plus 提供的一种链式查询方式,通过 Lambda 表达式来构建查询条件。相比于传统的 XML 配置或注解方式,lambdaQuery() 更加直观和类型安全。

2.1 基本用法

假设我们有一个 User 实体类,对应的数据库表为 user,表结构如下:

CREATE TABLE user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT,
    email VARCHAR(100)
);

对应的 User 实体类如下:

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

我们可以通过 lambdaQuery() 来进行查询操作。例如,查询所有年龄大于 18 岁的用户:

List<User> userList = userService.lambdaQuery()
        .gt(User::getAge, 18)
        .list();

2.2 链式调用

lambdaQuery() 支持链式调用,可以组合多个条件。例如,查询年龄大于 18 岁且名字包含 “张” 的用户:

List<User> userList = userService.lambdaQuery()
        .gt(User::getAge, 18)
        .like(User::getName, "张")
        .list();

2.3 排序和分页

lambdaQuery() 还支持排序和分页操作。例如,查询年龄大于 18 岁的用户,并按照年龄降序排列,同时分页查询:

Page<User> page = new Page<>(1, 10); // 查询第1页,每页10条数据
Page<User> userPage = userService.lambdaQuery()
        .gt(User::getAge, 18)
        .orderByDesc(User::getAge)
        .page(page);

2.4 查询单个字段

有时候我们只需要查询某个字段的值,可以使用 select() 方法来指定查询的字段。例如,查询所有用户的姓名:

List<String> nameList = userService.lambdaQuery()
        .select(User::getName)
        .list();

2.5 查询部分字段

如果我们只需要查询部分字段,可以使用 select() 方法来指定查询的字段。例如,查询所有用户的姓名和年龄:

List<User> userList = userService.lambdaQuery()
        .select(User::getName, User::getAge)
        .list();

2.6 查询去重

如果我们需要对查询结果进行去重,可以使用 distinct() 方法。例如,查询所有不重复的年龄:

List<Integer> ageList = userService.lambdaQuery()
        .select(User::getAge)
        .distinct()
        .list();

3. lambdaUpdate() 的使用

lambdaUpdate() 是 MyBatis-Plus 提供的一种链式更新方式,通过 Lambda 表达式来构建更新条件。相比于传统的 XML 配置或注解方式,lambdaUpdate() 更加直观和类型安全。

3.1 基本用法

假设我们需要更新所有年龄大于 18 岁的用户的邮箱为 adult@example.com,可以使用 lambdaUpdate() 来实现:

boolean updateResult = userService.lambdaUpdate()
        .gt(User::getAge, 18)
        .set(User::getEmail, "adult@example.com")
        .update();

3.2 链式调用

lambdaUpdate() 同样支持链式调用,可以组合多个条件。例如,更新年龄大于 18 岁且名字包含 “张” 的用户的邮箱为 adult@example.com

boolean updateResult = userService.lambdaUpdate()
        .gt(User::getAge, 18)
        .like(User::getName, "张")
        .set(User::getEmail, "adult@example.com")
        .update();

3.3 更新部分字段

如果我们只需要更新部分字段,可以使用 set() 方法来指定更新的字段。例如,更新所有用户的年龄为 20 岁:

boolean updateResult = userService.lambdaUpdate()
        .set(User::getAge, 20)
        .update();

3.4 更新条件为空

如果更新条件为空,lambdaUpdate() 会更新所有记录。例如,更新所有用户的邮箱为 default@example.com

boolean updateResult = userService.lambdaUpdate()
        .set(User::getEmail, "default@example.com")
        .update();

3.5 更新并返回更新结果

lambdaUpdate() 返回一个布尔值,表示更新是否成功。如果需要获取更新的记录数,可以使用 update(Wrapper<T> updateWrapper) 方法:

int updateCount = userService.lambdaUpdate()
        .gt(User::getAge, 18)
        .set(User::getEmail, "adult@example.com")
        .update();

4. 总结

lambdaQuery()lambdaUpdate() 是 MyBatis-Plus 提供的两个非常强大的功能,能够通过 Lambda 表达式的方式来进行条件查询和更新操作。相比于传统的 XML 配置或注解方式,lambdaQuery()lambdaUpdate() 更加直观和类型安全,能够大大提高开发效率。

在实际开发中,我们可以根据具体需求灵活使用 lambdaQuery()lambdaUpdate() 来构建复杂的查询和更新条件,同时结合排序、分页、去重等功能,能够满足大部分业务场景的需求。

希望本文对你理解和使用 MyBatis-Plus 中的 lambdaQuery()lambdaUpdate() 有所帮助。如果你有任何问题或建议,欢迎在评论区留言讨论。

推荐阅读:
  1. MybatisPlus代码生成器怎么用
  2. MybatisPlus不改变全局策略和字段注解把字段更新为null的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatisplus

上一篇:PHP数据加密方式是什么

下一篇:jquery如何隐藏option

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》