MyBatis-Plus 插件-动态表名插件
MyBatis-Plus 是 MyBatis 的一个增强工具包,提供了许多实用的功能,其中包括动态表名插件。动态表名插件允许在运行时动态指定表名,这在一些特定的业务场景中非常有用。在 MyBatis-Plus 中使用动态表名插件的步骤如下:1. 引入 MyBatis-Plus 依赖: 在项目的 pom.xml 文件中添加 MyBatis-Plus 的依赖。 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency>2. 配置动态表名插件: 在 MyBatis 的配置文件(通常是 mybatis-config.xml 或者是 Spring Boot 项目的 application.yml 或 application.properties 文件)...
MyBatis-Plus 插件-防全表更新与删除插件
MyBatis-Plus 提供了一个防止全表更新和删除的插件,这个插件主要用于在进行更新和删除操作时,防止没有任何条件的情况下对整个表的数据进行修改。这有助于防止误操作导致的数据丢失。以下是使用 MyBatis-Plus 防全表更新与删除插件的基本配置和使用方法:1. 添加 Maven 依赖: 在项目的 pom.xml 文件中添加 MyBatis-Plus 依赖。 <!-- Maven 依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency>2. 配置插件: 在 Spring Boot 项目的 application.yml 或 application.properties 中配置插件。 # 全表更新和删除插...
MyBatis-Plus 插件-多租户插件
MyBatis-Plus 提供了多租户插件,用于在多租户系统中简化数据隔离的处理。多租户系统是一种允许多个租户(通常是不同的客户或组织)共享同一个系统实例的架构,每个租户的数据应该被隔离,不会相互影响。以下是使用 MyBatis-Plus 多租户插件的基本配置和使用方法:1. 添加 Maven 依赖: 在项目的 pom.xml 文件中添加 MyBatis-Plus 依赖。 <!-- Maven 依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency>2. 配置多租户插件: 在 Spring Boot 项目的 application.yml 或 application.properties 中配置多租户插件。 ...
MyBatis-Plus 插件-乐观锁插件
MyBatis-Plus 提供了乐观锁插件,可以帮助你在进行更新操作时实现乐观锁的功能。乐观锁是一种通过在数据表中添加一个版本号字段(通常是整数类型)来控制并发访问的机制,以确保在多个事务同时对同一记录进行修改时,只有一个事务能够成功提交。以下是使用 MyBatis-Plus 乐观锁插件的基本配置和使用方法:1. 添加 Maven 依赖: 在项目的 pom.xml 文件中添加 MyBatis-Plus 依赖。 <!-- Maven 依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency>2. 配置乐观锁插件: 在 Spring Boot 项目的 application.yml 或 application.prop...
MyBatis-Plus 插件-分页插件
MyBatis-Plus 提供了一个强大的分页插件,使得在 MyBatis 中进行分页查询变得非常简单。以下是使用 MyBatis-Plus 分页插件的一些基本配置和用法:1. 添加 Maven 依赖: 在项目的 pom.xml 文件中添加 MyBatis-Plus 的分页插件依赖。 <!-- Maven 依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency>2. 配置分页插件: 在 Spring Boot 项目的 application.yml 或 application.properties 中配置分页插件。 # 分页插件配置 mybatis-plus: configuration: ...
MyBatis-Plus 扩展-企业高级特性
MyBatis-Plus 提供了许多企业级高级特性,使得开发者能够更轻松、高效地进行数据库操作。以下是一些 MyBatis-Plus 的企业高级特性:1. 代码生成器: MyBatis-Plus 的代码生成器能够根据数据库表自动生成实体类、Mapper 接口以及 XML 映射文件,大大减少了手动编写重复代码的工作量。2. Lambda 表达式查询: MyBatis-Plus 支持使用 Lambda 表达式进行条件构造,使得查询条件更加类型安全、直观,并且能够避免使用字符串拼接的方式构造 SQL 条件。 // 示例:Lambda 表达式查询 List<User> userList = userMapper.selectList(Wrappers.<User>lambdaQuery() .eq(User::getAge, 25) .like(User::getName, "John"));3. 条件构造器: MyBatis-Plus 提供了丰富的条件构造器(Wrapper) API,支持各种条件的拼...
MyBatis-Plus 扩展-多数据源
MyBatis-Plus 支持多数据源的配置,可以通过配置多个 DataSource 和 SqlSessionFactory 实例,并通过注解或配置文件指定使用哪个数据源。以下是一个简单的示例,演示如何在 Spring Boot 中配置多数据源:1. 添加依赖: 在 Maven 或 Gradle 中添加 MyBatis-Plus 和数据库驱动的依赖。<!-- Maven 依赖 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version></dependency><!-- 数据库驱动依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artif...
MyBatis-Plus 扩展-执行SQL分析打印
在 MyBatis-Plus 中,可以通过配置 SQL 执行分析器(SqlExplainInterceptor)来打印 SQL 执行的相关信息,例如 SQL 语句、参数、执行时间等。以下是一个简单的配置示例:首先,确保在 Maven 或 Gradle 中引入 MyBatis-Plus 依赖,例如:<!-- Maven 依赖 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version></dependency>然后,在 Spring Boot 项目的配置文件(application.yml 或 application.properties)中添加以下配置:mybatis-plus: configuration: log-impl: org.apache.ibatis.logg...
MyBatis-Plus 扩展-SQL注入器
MyBatis-Plus 提供了 SQL 注入器的功能,可以用于在 SQL 执行时注入自定义的 SQL 片段,实现一些特殊的 SQL 操作。这是 MyBatis-Plus 扩展的一项强大功能,可以用于定制和增强 SQL 的执行。以下是使用 MyBatis-Plus 进行 SQL 注入的简单步骤:1. 定义 SQL 注入器接口: import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.SqlSource; public interface MySqlInjector { void injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo); } 在上述例子中,定义了一个 MySqlInjector 接口,用于注入自定义的 MappedStatement。2. 实现 SQL 注入器接口: import com.b...
MyBatis-Plus 扩展-自动填充功能
MyBatis-Plus 提供了自动填充(MetaObjectHandler)的功能,可以在插入和更新数据时自动填充一些字段,如创建时间、更新时间、创建人、更新人等。这样可以简化代码,减少重复性的字段赋值操作。以下是使用 MyBatis-Plus 进行自动填充的简单步骤:1. 定义实体类: import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; @Data @TableName("user") public class User { private Long id; private String name; // 创建时间,插入时自动填充 ...
MyBatis-Plus 扩展-字段类型处理器
MyBatis-Plus 提供了字段类型处理器(TypeHandler)的扩展点,允许开发者自定义处理 Java 对象与数据库字段之间的映射关系。类型处理器可以用于处理一些特殊的数据类型或者自定义的数据处理逻辑。以下是使用 MyBatis-Plus 进行字段类型处理器的简单步骤:1. 定义自定义类型处理器类: import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MyTypeHandler extends BaseTypeHandler<MyType> { @Override public void setNonNullParam...
MyBatis-Plus 扩展-通用枚举
MyBatis-Plus 提供了通用枚举的功能,用于映射 Java 中的枚举类型到数据库中的字段。这样可以更方便地在数据库中存储和处理枚举类型的数据。以下是使用 MyBatis-Plus 进行通用枚举处理的简单步骤:1. 定义枚举类型: public enum GenderEnum { MALE("Male", "男"), FEMALE("Female", "女"); private String code; private String desc; GenderEnum(String code, String desc) { this.code = code; this.desc = desc; } public String getCode() { return code; } public String getDesc() { ...
MyBatis-Plus 扩展-逻辑删除
MyBatis-Plus 提供了逻辑删除的功能,可以方便地处理数据的软删除操作,而不是直接从数据库中物理删除记录。逻辑删除通过在表中添加一个标识字段,通常是表示删除状态的字段,如 deleted,用于标识记录是否被删除。以下是使用 MyBatis-Plus 进行逻辑删除的简单步骤:1. 在实体类中添加逻辑删除标识字段: import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("user") public class User { private Long id; private String name; // 逻辑删除标识字段,默认值为 0(未删除),1 表示已删除 @TableLogic private Integer deleted;...
MyBatis-Plus 核心功能-自定义ID生成器
MyBatis-Plus 允许开发者通过实现 IdentifierGenerator 接口来自定义ID生成器,以满足特定的需求。下面是一个简单的例子,展示如何自定义一个ID生成器:1. 创建自定义ID生成器类: import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; public class CustomIdGenerator implements IdentifierGenerator { @Override public Number nextId(Object entity) { // 这里可以根据业务需求生成自定义的ID,例如使用雪花算法等 // 这里简单起见,使用当前时间戳作为ID return System.currentTimeMillis(); } }2. 在实体类中使用自定义ID生成器: import com.baomidou.mybatisplus.annotation.I...
MyBatis-Plus 核心功能-主键策略
MyBatis-Plus 是基于 MyBatis 的增强工具,提供了一些方便的功能,其中之一就是主键策略。主键策略用于生成和处理数据库表的主键值。MyBatis-Plus 支持多种主键策略,下面是一些常用的主键策略及其用法:1. 自增主键策略(@TableId(type = IdType.AUTO)): import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; public class User { @TableId(type = IdType.AUTO) private Long id; // 其他字段... } 在这种策略下,数据库会自动生成主键值。需要注意的是,不同数据库的实现方式可能不同,一般在MySQL中使用AUTO_INCREMENT,而在其他数据库中可能有不同的机制。2. 手动输入主键值(@TableId(type = IdType.INPUT)): impor...
MyBatis-Plus 条件构造器-使用 Wrapper 自定义SQL
MyBatis-Plus 提供了 Wrapper 来进行条件构造,可以使用 Wrapper 来自定义 SQL 条件。以下是一个简单的示例,展示如何使用 Wrapper 自定义 SQL 条件:import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;public class MyBatisPlusExample { public static void main(String[] args) { // 示例1:查询条件构造 QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.select("id", "name").eq("age", 25); //...
MyBatis-Plus 条件构造器-UpdateWrapper
UpdateWrapper 是 MyBatis-Plus 中用于构建更新条件的条件构造器。它提供了丰富的方法,用于构建各种更新条件,同样支持链式调用,使得构建更新条件变得简单而灵活。以下是 UpdateWrapper 的一些常用方法和用法:1. 等值更新条件 eq: 等于UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.eq("age", 25);2. 不等值更新条件 ne: 不等于updateWrapper.ne("age", 25);3. 模糊查询更新条件 like: 模糊查询updateWrapper.like("name", "John"); notLike: 不匹配updateWrapper.notLike("name", "Tom");4. 范围更新条件 between: 在范围内updateWrapper.between("ag...
MyBatis-Plus 条件构造器-QueryWrapper
QueryWrapper 是 MyBatis-Plus 中用于构建查询条件的条件构造器之一。它提供了丰富的方法,用于构建各种条件,支持链式调用,使得构建查询条件变得简单而灵活。以下是 QueryWrapper 的一些常用方法和用法:1. 等值条件 eq: 等于QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", 25);2. 不等值条件 ne: 不等于queryWrapper.ne("age", 25);3. 模糊查询条件 like: 模糊查询queryWrapper.like("name", "John"); notLike: 不匹配queryWrapper.notLike("name", "Tom");4. 范围查询条件 between: 在范围内queryWrapper.between("age", 20, 30); ...
MyBatis-Plus 条件构造器-AbstractWrapper
在 MyBatis-Plus 中,AbstractWrapper 是条件构造器的抽象基类,它为 QueryWrapper、UpdateWrapper、LambdaQueryWrapper 和 LambdaUpdateWrapper 提供了一些公共的方法和属性。这些方法和属性可以用于构建灵活的查询和更新条件。以下是 AbstractWrapper 的一些主要方法和属性:1. 公共属性 protected final LinkedHashMap<String, Object> paramNameValuePairs: 存储参数名和参数值的映射关系。在构建 SQL 语句时,这个映射用于生成条件部分。2. 方法 public String getSqlSegment(): 获取 SQL 片段,用于条件构造器中生成 SQL 语句的 WHERE 子句。 public String getParamAlias(): 获取参数别名,用于条件构造器中生成 SQL 语句的参数别名。 protected void initEntityClass(T entity): 初始化实体类。在 Lambd...
MyBatis-Plus 核心功能-条件构造器
MyBatis-Plus 提供了强大的条件构造器(Wrapper),用于在进行数据库查询、更新和删除操作时构建灵活的查询条件。主要的条件构造器有 QueryWrapper、UpdateWrapper、LambdaQueryWrapper、LambdaUpdateWrapper 等,它们分别用于查询和更新操作。1. QueryWrapperQueryWrapper 用于构建查询条件,支持链式调用。以下是一些常见的用法: 等值条件:QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", 25); 模糊查询:queryWrapper.like("name", "John"); 范围查询:queryWrapper.between("age", 20, 30); 排序:queryWrapper.orderByDesc("age"); 多条件组合查询:queryWrapper....