MybatisPlus核心功能

文章目录

  • 一、前言
  • 二、核心功能
    • 2.1、条件构造器
      • 2.1.1、基础查询条件
      • 2.1.2、复杂查询条件
      • 2.1.3、动态查询条件
      • 2.1.4、查询结果排序
      • 2.1.5、执行查询
    • 2.2、主键策略
      • 2.2.1、自增主键策略
      • 2.2.2、UUID 主键策略
      • 2.2.3、雪花算法主键策略
      • 2.2.4、自定义 ID 生成策略
  • 三、总结

一、前言

MyBatis-Plus 是一个基于 MyBatis 的增强工具,提供了一系列强大的功能,能够极大地简化 Java 持久层的开发。本文将深入探讨 MyBatis-Plus 的核心功能,包括条件构造器、主键策略以及自定义 ID 生成器。

二、核心功能

2.1、条件构造器

条件构造器能够让开发者以更优雅的方式构建复杂的查询条件,从而提升查询的灵活性和可读性。

2.1.1、基础查询条件

条件构造器的基本概念是创建一个 QueryWrapper 对象,然后使用其方法来逐步添加查询条件。我们以一个 User 表为例来说明:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25)
            .like("name", "John");

上述代码中,我们创建了一个 QueryWrapper 对象,并使用 eqlike 方法分别添加了等于和模糊查询的条件。

2.1.2、复杂查询条件

条件构造器支持各种复杂的查询条件组合,如 BETWEEN、IN、OR 等。以下是一些示例:

queryWrapper.between("age", 20, 30)
            .in("department", "IT", "Finance")
            .or()
            .like("name", "Smith");

在上述代码中,我们使用 between 方法添加了一个范围查询条件,使用 in 方法添加了一个多选项查询条件,使用 or 方法创建了一个 OR 条件组。

2.1.3、动态查询条件

条件构造器还支持根据条件是否成立来动态添加查询条件,这在动态查询中非常有用。以下是一个示例:

if (StringUtils.isNotEmpty(keyword)) {
    queryWrapper.like("name", keyword);
}
if (minAge != null && maxAge != null) {
    queryWrapper.between("age", minAge, maxAge);
}

在上述代码中,我们根据不同的情况动态添加了查询条件,使得查询更加灵活。

2.1.4、查询结果排序

条件构造器还支持添加排序条件,使得查询结果按照指定的字段进行排序:

queryWrapper.orderByAsc("age")
            .orderByDesc("salary");

2.1.5、执行查询

最后,我们使用 QueryWrapper 对象执行查询:

List<User> userList = userMapper.selectList(queryWrapper);

2.2、主键策略

2.2.1、自增主键策略

自增主键策略是最常见的主键生成策略,适用于大多数数据库。通过自增,数据库会自动为每个插入的记录生成唯一的主键值。在 MyBatis-Plus 中,使用 IdType.AUTO 可以指定自增主键策略。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

public class User {
    @TableId(type = IdType.AUTO) // 自增主键
    private Long id;
    // 其他字段...
}

2.2.2、UUID 主键策略

MybatisPlus核心功能_第1张图片

UUID 主键策略通过生成 UUID(通用唯一标识符)来确保主键的全局唯一性。这对于分布式系统中的数据一致性非常重要。在 MyBatis-Plus 中,使用 IdType.ASSIGN_UUID 可以指定 UUID 主键策略。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

public class Product {
    @TableId(type = IdType.ASSIGN_UUID) // UUID 主键
    private String id;
    // 其他字段...
}

2.2.3、雪花算法主键策略

雪花算法主键策略是一种高效的分布式唯一 ID 生成算法,能够在分布式环境下生成有序的、唯一的 ID。在 MyBatis-Plus 中,使用 IdType.ASSIGN_ID 可以指定雪花算法主键策略。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

public class Order {
    @TableId(type = IdType.ASSIGN_ID) // 雪花算法主键
    private Long id;
    // 其他字段...
}

2.2.4、自定义 ID 生成策略

如果以上内置的主键策略不满足需求,你还可以使用自定义的 ID 生成策略。首先,你需要实现 IdentifierGenerator 接口,然后在实体类中使用 IdType.INPUT 指定使用自定义生成器。

@Component
public class CustomIdGenerator implements IdentifierGenerator {
    @Override
    public Long nextId(Object entity) {
        // 自定义 ID 生成逻辑
        // 返回生成的 ID
    }
}
public class CustomEntity {
    @TableId(type = IdType.INPUT, inputType = CustomIdGenerator.class) // 自定义 ID 生成策略
    private Long id;
    // 其他字段...
}

三、总结

MyBatis-Plus 不仅在 CRUD 操作上提供了极大的便利,还提供了更高级的功能,如条件构造器、主键策略和自定义 ID 生成器。这些功能的集成使得持久层操作更加简单而灵活,让开发者能够专注于业务逻辑而不用过多关注 SQL 细节。

你可能感兴趣的:(中间件篇,数据库,mybatisplus)