
Fastify
高效、低开销的 Node.js Web 框架
MyBatis-Plus(简称MP)是MyBatis的强力扩展工具,在保留MyBatis所有特性的基础上,新增了自动化CRUD、条件构造器等高效功能。通过简化90%的单表操作代码,成为Java领域生产力最高的ORM框架之一,最新稳定版为3.5.3+,要求JDK 8+。
维度 | 原生MyBatis | MyBatis-Plus | 效率提升 |
---|---|---|---|
单表CRUD | 需手写SQL | 内置通用Mapper | 300%↑ |
动态SQL构建 | XML/注解 | Lambda表达式链式调用 | 200%↑ |
分页查询 | 手动实现 | 自动物理分页 | 150%↑ |
代码生成 | 需第三方工具 | 内置生成器 | 400%↑ |
1. 智能CRUD接口
// 无需编写Mapper.xml
userMapper.selectById(1); // 按主键查询
userMapper.selectList(Wrappers.<User>query().eq("age", 25)); // 条件查询
userMapper.updateById(new User(1, "NewName")); // 按ID更新
2. Lambda表达式链式操作
// 类型安全的条件构造
List<User> users = userMapper.selectList(
Wrappers.lambdaQuery(User.class)
.gt(User::getAge, 18)
.likeRight(User::getName, "张")
.orderByAsc(User::getCreateTime)
);
3. 自动分页插件
// 配置分页插件
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
return new MybatisPlusInterceptor().addInnerInterceptor(new PaginationInnerInterceptor());
}
// 使用分页(Page对象自动填充)
Page<User> page = userMapper.selectPage(new Page<>(1, 10), queryWrapper);
1. 多租户SAAS支持
// 配置租户拦截器
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
@Override
public String getTenantIdColumn() {
return "tenant_id";
}
}));
2. 逻辑删除自动过滤
# application.yml
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted # 逻辑删除字段
logic-delete-value: 1 # 删除值
logic-not-delete-value: 0 # 未删除值
3. 性能分析插件
@Bean
public MybatisPlusInterceptor performanceInterceptor() {
PerformanceInterceptor interceptor = new PerformanceInterceptor();
interceptor.setFormat(true); // 格式化SQL输出
return interceptor;
}
1. 快速生成全套代码
FastAutoGenerator.create("jdbc:mysql://localhost:3306/db", "user", "pass")
.globalConfig(builder -> builder.author("dev").outputDir("/src/main/java"))
.packageConfig(builder -> builder.parent("com.example"))
.strategyConfig(builder -> builder.addInclude("user", "order"))
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎
.execute();
2. 生成效果示例
├─java
│ └─com
│ └─example
│ ├─controller # 生成REST接口
│ ├─entity # 生成JPA实体
│ ├─mapper # 生成Mapper接口
│ └─service # 生成Service层
1. SQL执行分析
-- 生成的优化后SQL示例
SELECT id,name,age
FROM user
WHERE age > 18
AND name LIKE '张%'
ORDER BY create_time ASC
LIMIT 10 OFFSET 0
2. 二级缓存配置
mybatis-plus:
configuration:
cache-enabled: true
local-cache-scope: statement
3. 批量操作优化
// 批量插入(性能比单条提升10倍+)
List<User> users = ...;
userMapper.insertBatchSomeColumn(users);
技术栈 | 集成方案 | 优势体现 |
---|---|---|
Spring Boot | 官方starter自动配置 | 零配置快速集成 |
Knife4j | 自动生成Swagger文档 | 接口可视化 |
Hutool | 工具类组合使用 | 增强类型转换能力 |
Dynamic-DS | 多数据源切换 | 读写分离轻松实现 |
官方渠道:
实战教程:
可视化工具:
项目类型 | 推荐版本 | 核心优势 |
---|---|---|
新建微服务项目 | 3.5.3+ | 完整Lambda支持 |
传统企业系统 | 3.4.3 | 稳定兼容老项目 |
国产化环境 | 3.5.2+ | 适配达梦/人大金仓 |
本站速览导航提供的MyBatis-Plus都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由速览导航实际控制,在2025年4月1日 下午7:20收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,速览导航不承担任何责任。