`UpdateWrapper`和`LambdaUpdateWrapper`都是MyBatis-Plus提供的封装SQL语法的工具类,它们的主要区别在于构造条件的方式不同。

`UpdateWrapper`使用传统的getter/setter的方式构造查询条件,需要手动指定字段名,如:

```java

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "Tom")
            .gt("age", 18)
            .set("email", "tom@example.com");


```

而`LambdaUpdateWrapper`则可以使用Lambda表达式构造查询条件,不需要手动指定字段名,具有更高的类型安全性和代码的可读性,如:

```java

LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(User::getName, "Tom")
                   .gt(User::getAge, 18)
                   .set(User::getEmail, "tom@example.com");


```

另外,`LambdaUpdateWrapper`还可以通过方法`setSql`来添加自定义的SQL语句,如:

```java

LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(User::getName, "Tom")
                   .setSql("age = age + 1");


```

综上所述,`LambdaUpdateWrapper`具有更加简洁、类型安全、灵活的优势,在日常开发中更常用。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐