Mybatis-Flex v1.3.0 发布,新的方式使用一对多和多对一
Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。
总而言之,Mybatis-Flex 能够极大地提高我们的开发效率和开发体验,让我们有更多的时间专注于自己的事情。
MyBatis-Flex v1.3.0 主要是新增了一对多、多对一等查询方法,同时在 QueryWrapper 的表达上,增加了许多常用的函数、case when 等 SQL 构建。
以下是文章的多对多示例,一篇文章可能归属于多个分类,一个类可以有多篇文章,需要用到中间表 article_category_mapping
。
Article 实体类:
public class Article { private Long id; private String title; private String content; //文章的归属分类,可能是 1 个或者多个 private List<Category> categories; //getter setter }
查询代码:
QueryWrapper queryWrapper = QueryWrapper.create() .select().form(ARTICLE) .where(ARTICLE.id.ge(100)); List<Article> articles = mapper.selectListByQuery(queryWrapper , fieldQueryBuilder -> fieldQueryBuilder .field(Article::getCategories) // 或者 .field("categories") .type(Category.class) //非集合,自动读取 type,可以不指定 type .queryWrapper(article -> QueryWrapper.create() .select().from(CATEGORY) .where(CATEGORY.id.in( select("category_id").from("article_category_mapping") .where("article_id = ?", article.getId()) ) ) );
更多关于类似场景请查看文档:https://mybatis-flex.com/zh/base/field-query.html
另外,v1.3.0 新增的 Case When 的 SQL 构建语法如下:
QueryWrapper wrapper = QueryWrapper.create() .select(ACCOUNT.ID ,case_().when(ACCOUNT.ID.ge(2)).then("x2") .when(ACCOUNT.ID.ge(1)).then("x1") .else_("x100") .end().as("xName")
其生成 SQL 如下:
SELECT `id`, (CASE WHEN `id` >= 2 THEN 'x2' WHEN `id` >= 1 THEN 'x1' ELSE 'x100' END) AS `xName` FROM `tb_account`
执行结果如下:
|id |xName | |1 |x1 | |2 |x2 |
关于这部分更多的文档请参考:https://mybatis-flex.com/zh/base/querywrapper.html#select-case-when
Mybatis-Flex v1.3.0 主要更新如下:
- 新增:新增 一对多、多对一 查询功能
- 新增:为 SqlServer 添加独立的 LimitOffset 处理器
- 新增:QueryWrapper 新增 "for update" 的 SQL 构建支持
- 新增:QueryWrapper 新增 select convert(...) 的 SQL 构建支持
- 新增:QueryWrapper 新增 select case when ... then 的 SQL 构建支持
- 优化:APT 默认生成独立文件,之前所有 APT 生成在同一个文件修改为可配置
- 修复:Table.camelToUnderline 注解在 APT 上配置不生效的问题
- 修复:多租户设置 TenantId 时,在某些极端情况下出现异常的问题
- 文档:新增 一对多、多对一 的相关文档
- 文档:新增 select case when ... then 的 QueryWrapper 示例
- 文档:添加关于 hint 的相关描述
和其他框架对比请参考:
- 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 框架,请访问 Mybatis-Flex 官网:https://mybatis-flex.com

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于openfaas托管脚本的实践
作者 |张曦 一、openfaas产品背景 在云服务架构发展之初,这个方向上的思路是使开发者不需要关心搭建和管理后端应用程序。这里并没有提及无服务器这个概念,而是指后端基础设施由第三方来托管,需要的基础架构组建均以服务的形式提供,比如数据库、消息队列和认证服务等。 但亚马逊在2014年发布AWS Lambda时,为在云中运行的应用程序带来了一个新的系统架构思路,即不需要在服务器上部署等待HTTP请求或API调用的进程。Lambda提供了一个事件触发的机制及框架,当收到用户请求时触发一个事件,在一个AWS server上执行用户注册的功能(通常只是一个函数,业界一般称这种类型的服务为FaaS)。 当前,提供FaaS服务的云服务厂商除AWS外,还有Google Cloud(alpha)、Microsoft Azuze、IBM OpenWhisk等。国内的云服务提供商如阿里云 FC、百度云CFC、腾讯云SCF。比较受欢迎的开源架构有OpenFaaS、Knative、OpenWhisk等。 二、项目业务背景 阿拉丁是百度搜索平台的产品,一般位于百度搜索结果页的首位,是百度搜索满足用户搜索需求闭...
- 下一篇
Deno 1.34 发布,deno compile 命令支持 npm 包
Deno 1.34 已正式发布,主要更新内容是优化与 npm 和 Node.js 的兼容性,从而整体提升开发者体验,并为未来的性能增强奠定基础。 值得关注的变化: deno compile支持 npm 包 从 Deno v1.6 开始,deno compile支持将项目编译成单个二进制可执行文件,可方便开发者: 在所有主要平台上分发和执行二进制文件,无需安装 Deno 或依赖项 在可执行文件中包含资源以提高可移植性 使用单个二进制文件简化部署 实现更快的启动时间 经过多个版本的迭代,deno compile已支持 Web Worker 和动态导入,最新版本已支持 npm 包。 下面是一个使用cowsay创建独立二进制可执行文件的示例: $ cat main.ts import { say } from "npm:cowsay@1.5.0"; console.log(say({ text: "Hello from Deno!" })); $ deno compile --allow-read main.ts $ ./main __________________ &l...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16