只需瞅一眼GoogleTrends上全球Java界最热门的两款SQL映射框架近一年的对比数字,就不难了解其实力分布:在此领域,MyBatis早已占领东亚地区开发者市场,并以绝对优势稳居中国最抢手Java数据库访问框架之首。
MyBatis霸榜的底气来源于其广袤的生态以及国内众多大厂的支持。而在琳琅满目的MyBatis扩展中,还埋藏着许多“宝藏项目”,来自阿里技术团队的FluentMyBatis便是其中一颗独特的新星。
一普拉斯们不香了
从iBatis到MyBatis,再到国内团队以MyBatisPlus为典型代表的诸多周边工具,Batis系列套餐的发展历程,几乎又是一部XML的兴衰史。最初的iBatis诞生于年,彼时XML在Java乃至整个软件技术界都还相当盛行,和同时期的许多项目一样,iBatis硬生生的将一堆堆XML塞进千家万户的项目里。
许多年后,曾今与iBatis并肩过的社区战友们纷纷淡出了历史舞台,少数像Spring这样延续至今的佼佼者,也逐渐摒弃XML,向代码化配置的方式发展。在这方面,iBatis一直是个保守派,即使在MyBatis接过iBatis的衣钵之后,也只是”重磅“推出了支持代码执行SQL的
Select/Insert/Update/Delete注解(以及相应的4种Provider注解),用来抵挡开发者们对XML泛滥的吐槽,这是在年中旬,然后就再无动作。直到年底,MyBatis的主要贡献者之一JeffButler正式创建MyBatisDynamicSQL项目,MyBatis终于开始全面拥抱无XML的代码化SQL构建。在从MyBatis到MyBatisDynamicSQL之间长达6年多的空窗期里,开源社区催生出了许多民间基于MyBatis的无XML代码方案,其中流行得比较广泛的是TkMybatis、MyBatisPlus这类内置Mapper和自动生成CRUD的扩展库,一经推出就收获诸多好评。包括MyBatisPlus里实际上并不太完备的条件构造器功能,也由于当时同类解决方案的匮乏而颇受追捧。与此同时,在MyBatis社区之外,一直在默默发展的JOOQ是一款历史与MyBatis几乎同样悠久的纯Java动态SQL执行库,它的用户群体不大,却口碑甚好。如今在任意搜索引擎上输入MyBatisvsJOOQ,依然能得到几乎是一边倒选择JOOQ的结果,大家给出的理由也非常一致:简洁、灵活、无需XML,很Java。而在MyBatis阵营里,若是拿出MyBatisPlus的条件构造器与之正面对阵,只消三个回合,就会被屁滚尿流的打出擂台。只可惜JOOQ的家底没有MyBatis那样殷实,早早走上了商业数据库支持卖License收费的道路,才让MyBatis免于在舆论上迎来自己的中年危机。
FluentMyBatis诞生于年底,即使与MyBatisDynamicSQL相比都是晚辈,然而尚处成长期的它就已透出了青出于蓝而胜于蓝的味道。
在实现方式上,MyBatisPlus覆写并替换了部分MyBatis内部类型的方法,整体机制较重,却也因此能将一些功能细节隐藏到用户无需