企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
以下是一些常用的 MyBatis-Plus 扩展工具类和方法,按功能分类: ## 一、基础工具类 | 工具类 | 方法 | 说明 | |--------|------|------| | **StringUtils** | `isEmpty/isNotEmpty` | 字符串判空 | | | `isBlank/isNotBlank` | 字符串判空(包含空格) | | | `camelToUnderline` | 驼峰转下划线 | | | `capitalizeFirst` | 首字母大写 | | **CollectionUtils** | `isEmpty/isNotEmpty` | 集合判空 | | | `listToMap` | List转Map | | **ObjectUtils** | `isNull/isNotNull` | 对象判空 | | **DateUtils** | `format` | 日期格式化 | | | `parse` | 日期解析 | ## 二、SQL 相关工具 | 工具类 | 方法 | 说明 | |--------|------|------| | **SqlUtils** | `removeBreakingWhitespace` | 去除SQL中多余空格 | | | `getWhere` | 获取WHERE条件 | | **SqlInjectionUtils** | `check` | SQL注入检查 | | **ScriptUtils** | `convert` | 脚本转换 | ## 三、Wrapper 条件构造器 | 方法 | 示例 | 说明 | |------|------|------| | **QueryWrapper** | `.eq("name", "张三")` | 等于条件 | | | `.like("name", "张")` | 模糊查询 | | | `.in("id", [1,2,3])` | IN查询 | | | `.orderByAsc("create_time")` | 排序 | | **LambdaQueryWrapper** | `.eq(User::getName, "张三")` | Lambda表达式条件 | | | `.between(User::getAge, 18, 30)` | 范围查询 | | **UpdateWrapper** | `.set("name", "李四")` | 设置更新值 | | | `.setSql("balance = balance + 100")` | 设置SQL表达式 | ## 四、分页相关 | 类/方法 | 说明 | |---------|------| | **Page<T>** | 分页参数封装类 | | `PaginationInterceptor` | 分页拦截器(旧版) | | `MybatisPlusInterceptor` | 分页拦截器(新版) | | `PaginationInnerInterceptor` | 分页内部拦截器 | ## 五、代码生成器 | 类 | 方法/配置 | 说明 | |----|----------|------| | **AutoGenerator** | `.setDataSource()` | 数据源配置 | | | `.setGlobalConfig()` | 全局配置 | | | `.setPackageInfo()` | 包配置 | | | `.setStrategy()` | 策略配置 | | | `.setTemplateEngine()` | 模板引擎 | | **FastAutoGenerator** | 链式配置 | 快速代码生成器 | ## 六、枚举处理 | 类/注解 | 说明 | |---------|------| | **@EnumValue** | 标记枚举值(数据库存储) | | `EnumTypeHandler` | 枚举类型处理器 | | **IEnum<T>** | 枚举接口 | ## 七、数据填充 | 类/注解 | 说明 | |---------|------| | **MetaObjectHandler** | 元对象处理器接口 | | `insertFill()` | 插入时自动填充 | | `updateFill()` | 更新时自动填充 | | **@TableField(fill = ...)** | 字段填充策略 | ## 八、ID生成器 | 类 | 说明 | |----|------| | `DefaultIdentifierGenerator` | 默认ID生成器 | | `Snowflake` | 雪花算法 | | **IdentifierGenerator** | ID生成器接口(可自定义) | ## 九、多租户支持 | 类/配置 | 说明 | |---------|------| | `TenantLineInnerInterceptor` | 多租户拦截器 | | `TenantLineHandler` | 租户处理器接口 | | `@SqlParser(filter = true)` | SQL解析器注解 | ## 十、性能分析 | 类/配置 | 说明 | |---------|------| | `PerformanceInterceptor` | 性能分析拦截器(旧版) | | `IllegalSQLInnerInterceptor` | SQL性能分析拦截器 | ## 十一、动态表名 | 类 | 说明 | |----|------| | `DynamicTableNameInnerInterceptor` | 动态表名拦截器 | | `TableNameHandler` | 表名处理器接口 | ## 十二、其他实用工具 | 工具类 | 方法 | 说明 | |--------|------|------| | **Db** | `.list()` | 执行SQL查询 | | | `.save()` | 执行SQL插入 | | | `.update()` | 执行SQL更新 | | | `.delete()` | 执行SQL删除 | | **Condition** | `.create()` | 创建Wrapper条件 | | | `.isSql()` | 是否SQL条件 | | **Constants** | 常量类 | 存放框架常量 | | **IdWorker** | `getId()` | 分布式ID生成 | | | `getTimeId()` | 时间ID生成 | ## 使用示例 ```java // 1. QueryWrapper 示例 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq("status", 1) .like("username", "admin") .orderByDesc("create_time"); // 2. LambdaQueryWrapper 示例 LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>(); lambdaWrapper.eq(User::getStatus, 1) .between(User::getAge, 18, 60); // 3. 分页查询 Page<User> page = new Page<>(1, 10); page.setRecords(userMapper.selectPage(page, wrapper).getRecords()); // 4. 自动填充 @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); } @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } } ``` ## 版本说明 - **3.x版本**:使用 `MybatisPlusInterceptor` + 各种内部拦截器 - **3.4.0+**:推荐使用 `FastAutoGenerator` 代码生成器 - **注意**:部分工具类在不同版本中可能有差异 以上是 MyBatis-Plus 常用的扩展工具类和方法,实际使用时应根据具体版本参考官方文档。