先说结论:2020年了,推荐mybatis-plus
面向对象or程序逻辑和sql解耦?
在之前hibernate和mybatis比较时,两者最主要的区别是hibernate用面相对象的方式解决数据库操作问题,sql相对来说是不透明的,甚至你换数据库都无所谓。mybatis则相反,java和sql完全分离,需要自己实现相关sql。
hibernate写sql麻烦,mybatis写很多重复的sql?
后来大家发现hibernate要做复杂的sql,比如涉及多表的报表之类的东西,因为不够直观,优化起来很复杂。mybatis干啥都要写一堆接近重复的sql,比如单表的CRUD也要写一套mapper+xml里的sql,太麻烦了,虽然有了mybatis-gen*这类mybatis的生成器,但是还是很麻烦,开发时要生成一堆模板代码。
有没有既能让我CRUD快速开发,又能让我解耦,还能让我想优化的时候直接撸sql的东西?
在我看来,mybatis-plus的出现很好的解决的现在orm框架的问题。它是mybatis的增强工具,要配合着mybatis使用,并没有脱离mybatis的初衷。简单的引入后,依托于BaseMapper不写一句sql就可以满足单表的CRUD功能。在你想要撸sql的时候,只需要写自己想要另外写的sql就行。
利益相关
用了这个框架,节约了很多时间用来刷知乎。