重磅推出链式查询功能,MyBatis-Flex v1.5.2 发布
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 审计... 等等等等。 这一切,免费且灵动。
在 MyBatis-Flex v1.5.2 中,主要是新增了 QueryWrapperChain 用于链式查询和操作,以下是 QueryWrapperChain 的一个简单的测试(查询文章列表):
@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(); } }
如果只是查询 1 条数据呢?示例代码如下:
Article article = articleService.queryChain() .select(ARTICLE.ALL_COLUMNS) .from(ARTICLE) .where(ARTICLE.ID.ge(100)) .limit(1) .one();
直接查询 Vo 或者 Dto 等,同时有额外的字段扩展:
ArticleVo 的定义:
public class ArticleVo { private Long id; private Long accountId; private String title; private String content; //评论量最多的内容 private Long maxComments; //getter setter }
查询代码:
ArticleVo articleVo = articleService.queryChain() .select( ARTICLE.ALL_COLUMNS, max(ARTICLE.comments).as(ArticleVo::maxCommments) ) .from(ARTICLE) .where(ARTICLE.ID.ge(100)) .limit(1) .oneAs(ArticleVo.class);
关联查询呢?朴素而简单!
ArticleVo 的定义:
public class ArticleVo { private Long id; private Long accountId; private String title; private String content; //文章和分类的 多对多 关系配置 @RelationManyToMany( joinTable = "tb_article_category_mapping", // 中间表 selfField = "id", joinSelfColumn = "article_id", targetField = "id", joinTargetColumn = "category_id" ) private List<ArticleCategory> categories; //getter setter }
查询代码:
ArticleVo articleVo = articleService.queryChain() .select() .from(ARTICLE) .where(ARTICLE.ID.ge(100)) .limit(1) .oneWithRelationsAs(ArticleVo.class);
更多关于链式查询的内容,请异步官方文档:https://mybatis-flex.com/zh/base/query-wrapper-chain.html
MyBatis-Flex v1.5.2 更新如下:
- 新增:添加 QueryWrapperChain 用于链式调用查询或者操作数据,感谢 @王帅
- 新增:添加 DbChain 链式调用 Db + Row 的相关方法和功能,感谢 @王帅
- 新增:Relation 关联查询添加
selectColumns
配置,用于自定义查询指定列名 - 新增:代码生成器添加支持 Springdoc 的支持,感谢 @dgmico
- 新增:QueryWrapper 的 orderBy 添加 lambda 参数的支持
- 优化:重构 IService 统一批量操作方式,感谢 @王帅
- 优化:Field Query 中 QueryWrapper 返回 null 值时,应该不进行属性查询,感谢 @王帅
- 优化:移除 ConvertUtil.java 一些未用到的代码
- 优化:修改 Db.selectObjectList() 方法返回数据类型不明确的问题,感谢 @王帅
- 修复:left join 多个条件,且多次引用相同表,后续的条件中别名无效的问题 #I7MI4O:leftjoin 多次引用相同表,且存在后续的 and(估计其他如 or 也可能有)时,后续的 and 等条件中别名无效
- 修复:在某些场景下,在 Spring Controller 使用
@UseDataSource
设置当前数据源不生效的问题 - 修复:当 Entity 或者 VO 中定义数据类型为
List<Map
> 时,映射出错的问题 - 修复:在 kotlin 下,使用枚举类作为条件参数时,sql 执行异常的问题,感谢 @liibang
- 修复:逻辑删除使用时间类型时,正常值初始化错误的问题,感谢 @王帅
- 修复:在 kotlin 下,apt 无法正确找到 mybatis-flex.config 配置的问题
- 修复:代码生成器在多次调用生成时,可能出现 IllegalArgumentException 错误的问题
- 修复:嵌套事务下,且传播方式为 REQUIRED 时,当子事务抛出异常时出错的问题 #I7N8A1:FlexTransactionManager doSetRollbackOnly 未实现 spring jdbc 默认行为
- 文档:更新多表
@Relation
关联查询的相关文档 - 文档:添加关于 QueryWrapperChain 的相关文档
- 文档:修改逻辑删除的相关链接引用错误,感谢 @王帅
- 文档:添加关于 DbChain 使用的相关文档,感谢 @王帅
进一步了解 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 实现字典回写

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
智能运维进入6.0时代,CloudwiseGPT运维大语言模型强势来袭!
大语言模型(Large Laungage Models,LLMs),是一种基于机器学习技术训练的复杂模型,能够理解和生成人类语言。大语言模型已经被广泛应用在各种场景中,包括生成文章、回答问题、写作辅助、聊天机器人、代码生成等等。 今日,云智慧正式发布首个商用运维大语言模型产品CloudwiseGPT。 它是自主构建的微调集上可以进行微调的大语言模型,该数据集沉淀了丰富的运维知识库和全栈运维场景,并涵盖了广泛的IT相关信息。CloudwiseGPT能帮助客户分析和解决日常运维工作遇到的各类问题,极大的提高了IT部门的效率,运维大语言模型的应用创新也为IT运维带来革命性的变化。 集大成之作 相比于目前来自OpenAI的ChatGPT系列通用大模型,CloudwiseGPT不是最强通用模型 ,却是最懂运维的专属大语言模型! CloudwiseGPT的特点和优势有哪些? 全栈运维经验和知识库: 将大量运维经验与大语言模型进行深度的融合,形成了具备专家级运维能力的运维行业大语言模型。 全面的运维领域训练语料: 运维专家标注验证,数据质量高、应用范围广、数据量大等特点。 高可用高性能: 在IT运维...
- 下一篇
唐僧叨叨发布,历时八年打造的商用级别的即时通讯软件
愿景 让企业轻松拥有自己的即时通讯软件。 客户端源码 Web/PC端源码:https://gitee.com/TangSengDaoDao/TangSengDaoDaoWeb Android端源码:https://gitee.com/TangSengDaoDao/TangSengDaoDaoAndroid iOS端源码:https://gitee.com/TangSengDaoDao/TangSengDaoDaoiOS 架构图 WuKongIM架构图 技术文档 https://tangsengdaodao.com 截图演示:
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19