Let‘s Fluent:更顺滑的 MyBatis

Fluent MyBatis,一个来自阿里技术团队的MyBatis扩展,提供了无XML的代码化SQL构建,旨在超越MyBatis Plus和MyBatis Dynamic SQL。它结合了两者优点,生成标准辅助类,提供优秀的IDE语法提示和流式语句,支持动态换表名,简化复杂的查询和更新操作。相比XML,Java代码更易于阅读和维护,Fluent MyBatis引领了MyBatis生态的新潮流。
摘要由CSDN通过智能技术生成

只需瞅一眼Google Trends上全球Java界最热门的两款SQL映射框架近一年的对比数字,就不难了解其实力分布:在此领域,MyBatis早已占领东亚地区开发者市场,并以绝对优势稳居中国最抢手Java数据库访问框架之首。

MyBatis霸榜的底气来源于其广袤的生态以及国内众多大厂的支持。而在琳琅满目的MyBatis扩展中,还埋藏着许多“宝藏项目”,来自阿里技术团队的Fluent MyBatis便是其中一颗独特的新星。

一 普拉斯们不香了

从iBatis到MyBatis,再到国内团队以MyBatis Plus为典型代表的诸多周边工具,"Batis"系列套餐的发展历程,几乎又是一部XML的兴衰史。最初的iBatis诞生于2002年,彼时XML在Java乃至整个软件技术界都还相当盛行,和同时期的许多项目一样,iBatis硬生生的将一堆堆XML塞进千家万户的项目里。

许多年后,曾今与iBatis并肩过的社区战友们纷纷淡出了历史舞台,少数像Spring这样延续至今的佼佼者,也逐渐摒弃XML,向代码化配置的方式发展。在这方面,iBatis一直是个保守派,即使在MyBatis接过iBatis的衣钵之后,也只是”重磅“推出了支持代码执行SQL的@Select/@Insert/@Update/@Delete注解(以及相应的4种Provider注解),用来抵挡开发者们对XML泛滥的吐槽,这是在2010年中旬,然后就再无动作。直到2016年底,MyBatis的主要贡献者之一Jeff Butler正式创建MyBatis Dynamic SQL项目,MyBatis终于开始全面拥抱无XML的代码化SQL构建。

在从MyBatis到MyBatis Dynamic SQL之间长达6年多的空窗期里,开源社区催生出了许多民间基于MyBatis的无XML代码方案,其中流行得比较广泛的是Tk Mybatis、MyBatis Plus这类内置Mapper和自动生成CRUD的扩展库,一经推出就收获诸多好评。包括MyBatis Plus里实际上并不太完备的"条件构造器"功能,也由于当时同类解决方案的匮乏而颇受追捧。与此同时,在MyBatis社区之外,一直在默默发展的JOOQ是一款历史与MyBatis几乎同样悠久的纯Java动态SQL执行库,它的用户群体不大,却口碑甚好。如今在任意搜索引擎上输入"MyBatis vs JOOQ",依然能得到几乎是一边倒选择JOOQ的结果,大家给出的理由也非常一致:简洁、灵活、无需XML,很"Java"。而在MyBatis阵营里,若是拿出MyBatis Plus的"条件构造器"与之正面对阵,只消三个回合,就会被屁滚尿流的打出擂台。只可惜JOOQ的家底没有MyBatis那样殷实,早早走上了商业数据库支持卖License收费的道路,才让MyBatis免于在舆论上迎来自己的中年危机。

Fluent MyBatis诞生于2019年底,即使与MyBatis Dynamic SQL相比都是晚辈,然而尚处成长期的它就已透出了青出于蓝而胜于蓝的味道。

在实现方式上,MyBatis Plus覆写并替换了部分MyBatis内部类型的方法,整体机制较重,却也因此能将一些功能细节隐藏到用户无需关注的内部逻辑里;与之相反,MyBatis Dynamic SQL的实现机制非常轻量,不仅完全基于MyBatis原生的Provider系列注解开发,而且没有什么隐藏逻辑,对用户的每张表自动生成相应的Entity、DynamicSqlSupport和Mapper三个类,全部放入用户的源码目录里,因此暴露的细节比较多,代码侵入性略高。Fluent MyBatis取二者之所长,整体机制与MyBatis Dynamic SQL更接近,同样基于原生的Provider注解,对用户的每个表生成Entity类和默认空白的Dao类,不同之处在于它还会通过JVM编译期代码增强功能自动生成许多开发者不可更改的标准辅助类,这些代码无需放入用户的源码目录但能够在编码时直接使用,即提供丰富的功能,又保证了用户代码的整洁。

在使用方式上,Fluent MyBatis同样借鉴了前辈们的最优实践,没有花里胡哨的注解和配置,直接复用MyBatis连接,所有功能开箱即用。同时由于Fluent MyBatis将所有表字段、条件、操作都以方法调用形式提供,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值