【第7章】MyBatis-Plus持久层接口之Chain

发布于:2024-06-28 ⋅ 阅读:(14) ⋅ 点赞:(0)


前言

Chain 是 Mybatis-Plus 提供的一种链式编程风格,它允许开发者以更加简洁和直观的方式编写数据库操作代码。Chain 分为 query 和 update 两大类,分别用于查询和更新操作。每类又分为普通链式和 lambda 链式两种风格,其中 lambda 链式提供了类型安全的查询条件构造,但不支持 Kotlin。


一、使用步骤

1. query

提供链式查询操作,可以连续调用方法来构建查询条件。

// 链式查询 普通
QueryChainWrapper<T> query();
// 链式查询 lambda 式。注意:不支持 Kotlin
LambdaQueryChainWrapper<T> lambdaQuery();

示例:

@Autowired
UserMapper userMapper;
@RequestMapping("01")
public void chain01() {
    // 普通链式查询示例
    List<User1> list = new QueryChainWrapper<>(userMapper).eq("name", "John").list();// 查询 name 为 "John" 的所有记录
    System.out.println(list);
    // lambda 链式查询示例
    User1 one = new LambdaQueryChainWrapper<>(userMapper).eq(User1::getAge, 30).one();// 查询年龄为 30 的单条记录
    System.out.println(one);
}

2. update

提供链式更新操作,可以连续调用方法来构建更新条件。

// 链式更改 普通
UpdateChainWrapper<T> update();
// 链式更改 lambda 式。注意:不支持 Kotlin
LambdaUpdateChainWrapper<T> lambdaUpdate();

示例:

@Autowired
UserMapper userMapper;
@RequestMapping("02")
public void chain02() {
    // 普通链式更新示例
    boolean update = new UpdateChainWrapper<>(userMapper).set("status", "inactive").eq("name", "John").update();// 将 name 为 "John" 的记录 status 更新为 "inactive"
    System.out.println(update);
    // lambda 链式更新示例
    User1 updateUser = new User1();
    updateUser.setEmail("new.email@example.com");
    boolean update1 = new LambdaUpdateChainWrapper<>(userMapper).set(User1::getEmail, updateUser.getEmail()).eq(User1::getId, 1).update();// 更新 ID 为 1 的用户的邮箱
    System.out.println(update1);
}

二、使用提示

  • 链式操作通过返回 QueryChainWrapper 或 UpdateChainWrapper 的实例,允许开发者连续调用方法来构建查询或更新条件。
  • lambda 链式操作提供了类型安全的查询条件构造,通过方法引用 Entity::getId 等方式,避免了字符串硬编码,提高了代码的可读性和安全性。
  • 在使用链式操作时,注意链式方法的调用顺序,通常是先设置条件,然后执行查询或更新操作。
    链式操作支持多种条件构造方法,如 eq、ne、gt、lt、like 等,可以根据实际需求选择合适的方法。
  • 链式操作返回的结果可以是单条记录、多条记录、总记录数等,具体取决于最后调用的方法。

通过使用 Chain,开发者可以更加高效地编写数据库操作代码,同时保持代码的清晰和可维护性。


总结

回到顶部