MyBatis-Flex: 一个优雅的 MyBatis 增强框架
特征
1、很轻量
MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。
2、只增强
MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能。
3、高性能
MyBatis-Flex 采用独特的技术架构、相比许多同类框架,MyBatis-Flex 的在增删改查等方面的性能均超越其 5~10 倍或以上。
4、更灵动
MyBatis-Flex 支持多主键、多表查询、逻辑删除、乐观锁、数据脱敏、数据加密、多数据源、分库分表、字段权限、 字段加密、多租户、事务管理、SQL 审计... 等等等等。 这一切,免费且灵动。
在 MyBatis-Flex v1.5.8 发布啦,在 v1.5.8 中,我们可以通过 setRaw 来插入数据了,比如:
@Test
public void testInsertWithRaw() {
Account account = new Account();
account.setUserName("michael");
Account newAccount = UpdateWrapper.of(account)
.setRaw(Account::getBirthday, "now()")
.toEntity();
accountMapper.insert(newAccount);
}
其执行的 SQL 如下:
INSERT INTO `tb_account`(`user_name`, `birthday`)
VALUES (?, now())
或者复杂一点的:
@Test
public void testInsertWithRaw() {
Account account = new Account();
account.setUserName("michael");
Account newAccount = UpdateWrapper.of(account)
.setRaw(Account::getBirthday, "(select xxx from ...)")
.toEntity();
accountMapper.insert(newAccount);
}
其执行的 SQL 如下:
INSERT INTO `tb_account`(`user_name`, `birthday`)
VALUES (?, (select xxx from ...))
MyBatis-Flex v1.5.8 更新细节如下:
- 新增:Row 以及 Entity 在新增时,添加 setRaw 的支持
- 新增:数据库方言添加对 lealone 数据库的支持,感谢 @chgz
- 新增:QueryChain 添加新 of 方法,用于支持通过 Entity 创建 QueryChain 对象,感谢 @liibang
- 新增:提供多线程情况下子父线程获取切换数据源功能,感谢 @life
- 优化:设置乐观锁未设置值的异常信息国际化
- 优化:设置 @<table> 的名称配置支持 "schema.tableName" 配置
- 优化:重构移除乐观锁、逻辑删除、多租户的全局默认字段配置,用户需手动配置生效
- 优化:添加逻辑删除、乐观锁、多租户的全局配置的 spring 配置文件提示功能
- 优化:重构用户手写的条件中是否包含该表,感谢 @王帅
- 优化:重构获取 join 连表信息时携带别名,感谢 @王帅
- 优化:重构 QueryWrapper 的括号生成,以动态添加子 where 条件,感谢 @王帅
- 优化:添加 Conditional 接口用于统一 Condition 的 api,感谢 @王帅
- 修复:druid 数据源的某些场景下,数据加密无法使用的问题
- 修复:修复 MybatisKeyGeneratorUtil 类在某些情况下可能得空指针异常问题,感谢 @norkts
- 修复:SqlOperator 遗漏了 NOT_EQUALS 操作符 的问题,感谢 @王帅
- 修复:Relation 注解查询,忽略字段使用的泛型错误的问题,感谢 @王帅
- 修复:DbChain 的 setRaw 方法指向错误的问题,感谢 @王帅
- 文档:添加 set 和 setRaw 区别的相关文档
- 文档:修改代码生成器的相关文档错别字,感谢 @她出去赚钱了
- 文档:改正了注解处理器中的内容,将其修改为正确的注解处理器,感谢 @CloudPlayer
- 文档:优化 Gradle 和 KAPT 的相关文档,感谢 @王帅
- 文档:添加乐观锁、逻辑删除、多租户的全局配置的相关文档,感谢 @王帅
- 文档:添加多线程情况下子父线程获取切换数据源功能的相关文档,感谢 @life
当前版本得以发布,感谢以下 8 位同学的 PR,他们分别是:
@王帅、@life、@CloudPlayer、@卡莫 sama、@chgz、@liibang、@norkts、@她出去赚钱了
进一步了解 MyBatis-Flex 框架,请参考一下链接:
bilibili 视频教程(免费):