MyBatis-Flex v1.5.3 发布,进一步优化链式操作


MyBatis-Flex: 一个优雅的 MyBatis 增强框架

特征

1、很轻量

MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。

2、只增强

MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能。

3、高性能

MyBatis-Flex 采用独特的技术架构、相比同类框架(比如 MyBatis-Plus),MyBatis-Flex 的在增删改查等方面的性能均超越其 5~10 倍或以上。

4、更灵动

MyBatis-Flex 支持多主键、多表查询、逻辑删除、乐观锁、数据脱敏、数据加密、多数据源、分库分表、字段权限、 字段加密、多租户、事务管理、SQL 审计... 等等等等。 这一切,免费且灵动。

在 v1.5.3 中,主要是优化了链式查询和链式更新的功能,如下是 MyBatis-Flex 一个简单的示例:

@SpringBootTest
class ArticleServiceTest {

@Autowired
ArticleService articleService;

@Test
void testChain() {
List<Article> articles = articleService.queryChain()
.select(ARTICLE.ALL_COLUMNS)
.from(ARTICLE)
.where(ARTICLE.ID.ge(100))
.list()
.forEach(System.out::println);
}
}

如果我们查询的是 vo、dto 之类的数据呢?

ArticleVo.java 定义如下:

public class ArticleVo {

private Long id;
private Long accountId;
private String title;
private String content;

//评论量最多的内容
private Long maxComments;

//getter setter
}

查询代码如下:

ArticleVo articleVo = QueryChain.of(articleMapper)
.select(
ARTICLE.ALL_COLUMNS,
max(ARTICLE.comments).as(ArticleVo::maxCommments)
 )
.from(ARTICLE)
.where(ARTICLE.ID.ge(100))
.limit(1)
.oneAs(ArticleVo.class);

数据更新?

@Test
public void testUpdateChain2() {

//更新数据
UpdateChain.of(Account.class)
.set(Account::getAge, ACCOUNT.AGE.add(1))
.where(Account::getId).ge(100)
.and(Account::getAge).eq(18)
.update();

//查询所有数据并打印
QueryChain.of(accountMapper)
.where(Account::getId).ge(100)
.and(Account::getAge).eq(18)
.list()
.forEach(System.out::println);
}

更多关于链式查询的内容,请异步官方文档:https://mybatis-flex.com/zh/base/chain.html

另外,这个版本还新增了对 ActiveRecord 的支持(可选),如下是 ActivieRecord 的一些示例:

保存数据:

Account.create()
.setUserName("张三")
.setAge(18)
.setBirthday(new Date())
.save();

更新数据:

Account.create()
.setAge(100)
.where(Account::getId).eq(1L)
.update();

查询 1 条数据:

Account.create()
.where(Account::getId).eq(1L)
.one();

更多关于 ActivieRecord 请参考:https://mybatis-flex.com/zh/base/active-record.html

 

MyBatis-Flex v1.5.3 更新如下:

  • 新增:添加 UpdateChain 方便用于对数据进行更新
  • 新增:添加对 ActiveRecord 设计模式的支持,感谢 @王帅
  • 新增:代码生成器 ColumnConfig 增加 propertyType. 可以用于自定通用属性的类型。感谢 @Jerry
  • 新增:添加 selectOneWithRelationsById(根据主表主键来查询 1 条数据) 方法,感谢 @barql
  • 新增:QueryWrapper.groupBy 支持 Lambda 表达式的功能,感谢 @王帅
  • 新增:QueryWrapper 添加 not like 构建的支持
  • 优化:重命名 QueryWrapperChain 为 QueryChain,保存和 UpdateChain 统一
  • 修复:@Relation 关联查询注解,在指定 selectColumns 出错的问题,感谢 @zhy_black
  • 修复:代码生成器配置 camelToUnderline 属性时 entity 生成后编译错误的问题,感谢 @张春根
  • 文档:优化 APT 的文档描述有错别字的问题,感谢 @淡定
  • 文档:添加关于 ActiveRecord 的相关文档,感谢 @王帅
  • 文档:修改代码生成器对 EnjoyTemplate 的描述错误的问题
  • 文档:添加更多关于链式查询的相关文档
  • 文档:重构文档链接,链式操作的相关文档
  • 文档:修改代码生成器对 EnjoyTemplate 的描述错误的问题

 

进一步了解 MyBatis-Flex 框架,请参考一下链接:

  • 1、快速开始:https://mybatis-flex.com/zh/intro/getting-started.html
  • 2、多表关联查询:https://mybatis-flex.com/zh/base/query.html
  • 3、一对多、多对一:https://mybatis-flex.com/zh/base/relations-query.html
  • 4、灵活的 QueryWrapper:https://mybatis-flex.com/zh/base/querywrapper.html
  • 5、逻辑删除:https://mybatis-flex.com/zh/core/logic-delete.html
  • 6、乐观锁:https://mybatis-flex.com/zh/core/version.html
  • 7、数据填充:https://mybatis-flex.com/zh/core/fill.html
  • 6、数据脱敏:https://mybatis-flex.com/zh/core/mask.html
  • 7、SQL 审计:https://mybatis-flex.com/zh/core/audit.html
  • 8、多数据源:https://mybatis-flex.com/zh/core/multi-datasource.htm
  • 9、数据源加密:https://mybatis-flex.com/zh/core/datasource-encryption.html
  • 10、动态表名:https://mybatis-flex.com/zh/core/dynamic-table.html
  • 11、事务管理:https://mybatis-flex.com/zh/core/tx.html
  • 12、数据权限:https://mybatis-flex.com/zh/core/data-permission.html
  • 13、字段权限:https://mybatis-flex.com/zh/core/columns-permission.html
  • 14、字段加密:https://mybatis-flex.com/zh/core/columns-encrypt.html
  • 15、字典回写:https://mybatis-flex.com/zh/core/columns-dict.html
  • 16、枚举属性:https://mybatis-flex.com/zh/core/enum-property.html
  • 17、多租户:https://mybatis-flex.com/zh/core/multi-tenancy.html
  • 18、代码生成器:https://mybatis-flex.com/zh/others/codegen.html
  • 19、QQ 交流群:https://mybatis-flex.com/zh/intro/qq-group.html
  • 20、更好用的功能正在路上:https://mybatis-flex.com

 

和其他框架对比请参考:

  • 1、和 MyBatis-Plus Fluent-Mybatis 功能】方面的对比:https://mybatis-flex.com/zh/intro/comparison.html
  • 2、和 MyBatis-Plus 性能】方面的对比:https://mybatis-flex.com/zh/intro/benchmark.html

 

MyBatis-Flex-Helper 开发插件:

这是一款高度自定义的 Mybatis-Flex IDEA 代码生成插件:

  • 开源地址:https://gitee.com/djxchi/mybatis-flex-code-gen.git
  • 视频简介:https://www.bilibili.com/video/BV1yV411g7Yd

 

bilibili 视频教程:

  • MyBatis-Flex 视频教程 - 01 课程介绍
  • MyBatis-Flex 视频教程 - 02 MyBatis-Flex 简介
  • MyBatis-Flex 视频教程 - 03 为什么使用 MyBatis-Flex
  • MyBatis-Flex 视频教程 - 04 基于 SpringBoot 的快速开始
  • MyBatis-Flex 视频教程 - 05 自动生成类的介绍
  • MyBatis-Flex 视频教程 - 06 MyBatis-Flex 的配置选项
  • MyBatis-Flex 视频教程 - 07 初识 BaseMapper 接口
  • MyBatis-Flex 视频教程 - 08 插入数据
  • MyBatis-Flex 视频教程 - 09 删除数据
  • MyBatis-Flex 视频教程 - 10 更新数据
  • MyBatis-Flex 视频教程 - 11 复杂更新
  • MyBatis-Flex 视频教程 - 12 基础查询
  • MyBatis-Flex 视频教程 - 13 映射查询
  • MyBatis-Flex 视频教程 - 14 QueryWrapper 的介绍
  • MyBatis-Flex 视频教程 - 15 QueryWrapper 的操作
  • MyBatis-Flex 视频教程 - 16 @Table 注解的简单使用
  • MyBatis-Flex 视频教程 - 17 onInsert、onUpdate 的使用
  • MyBatis-Flex 视频教程 - 18 onSet 实现字段权限
  • MyBatis-Flex 视频教程 - 19 onSet 实现字段加密
  • MyBatis-Flex 视频教程 - 20 onSet 实现字典回写

相關推薦

2023-08-27

26 日「源创会」北京站,聊聊 AI 大模型与底层技术 >>> MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、

2023-08-13

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能

2023-07-17

IoTOS v1.5.3 已经发布,IoTCard 管理 & 运营系统。   IoTOS-v1.5.3 新增 智能诊断&会话记录导出 1.通道数据统计增加 卡数量、总流量 已用流量 剩余流量 统计 2.卡详情增加会话信息查询会话记录(分页查询)、导出历史记录

2023-03-30

PicList 是一个云存储管理和图片上传工具,可以进行包括云端目录查看、文件搜索、批量上传下载和删除文件,复制多种格式文件链接和文件预览等操作。 开源地址和软件官网 Github: https://github.com/Kuingsmile/PicList Gitee: https

2024-08-28

SpringCloud + React 前后端分离 微服务版 昆仑管理系统 v1.5.3 发布! 更新日志 1、多页签代码更新优化;           2、Antd 组件更新适配修改; 3、增加菜单初始化脚本; 4、优化并修复前端及后端若干问题&nbs

2023-08-06

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能

2023-09-23

技术都能四世同堂,凭什么开发 30 岁就要被干掉? MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、

2023-09-26

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能

2024-11-01

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能

2024-07-24

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能

2024-07-03

SystemDictStarter v1.5.3 已经发布,这是一个系统数据字典自动转换工具。 此版本更新内容包括: Redis 使用 Pipeline 批量处理数据字典值文本 feat: 刷新字典数据时根据字典值文本数量来决定是否调用批量保存方法,在使用 Redis 存

2023-07-14

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能

2023-10-10

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能

2023-10-28

MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能