>>号外:关注“Java精选”公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料、开源项目。
Spring团队的Josh Long自己在Twitter上做了一个调查。1625次投票,样本量不算大,但也能说明问题。和我答案最后的那些调查图表基本一致,MyBatis的使用率在10%。
![](https://i-blog.csdnimg.cn/blog_migrate/1d1703f36299495db96b3f233f994507.png)
不同意上来就说人家调查是错的,也不同意错觉说。要么否定数据,要么否定感觉,都是骗自己。
我们看一下Google Trends的数据:
搜索条件是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/24490607889275092232b1f1b3f2d42c.png)
蓝色的是Hibernate,红色的是MyBatis。
World Wide,全球总体趋势:
![](https://i-blog.csdnimg.cn/blog_migrate/98279ec00c34ffc80db5d42ff760e8d7.png)
下面分国家看。
United States:
![](https://i-blog.csdnimg.cn/blog_migrate/bb1daf45c51ce2e420fda23929a764a4.png)
France:
![](https://i-blog.csdnimg.cn/blog_migrate/9f527690f0a309b3d3a10e03cf22421e.png)
India:
![](https://i-blog.csdnimg.cn/blog_migrate/c2b58931edc7c138e5bf774818d42112.png)
Canada:
![](https://i-blog.csdnimg.cn/blog_migrate/20741bb5d24edf72974082017539434e.png)
下面开始CJK(中日韩)
China:
![](https://i-blog.csdnimg.cn/blog_migrate/0f007a537b4d6f53be51eff64399b5b5.png)
Japan:
![](https://i-blog.csdnimg.cn/blog_migrate/5c602fa17d5bf0def04390e3c788306f.png)
South Korea:
![](https://i-blog.csdnimg.cn/blog_migrate/9e675399efc2f524583e9b02f95e6fe9.png)
其他英文技术网站上的多个统计:
![](https://i-blog.csdnimg.cn/blog_migrate/cfc6cfd2f4fd17f175c11da48c1d5a22.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6f4fda0e6b81c483199ec9b4e36149b2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fbd0476f3f8ea0558e9e60c54d0c6f87.png)
再看看Stack Overflow上的问题数
![](https://i-blog.csdnimg.cn/blog_migrate/9b972a55eab15914e8b825bfb55b1a84.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3ebc0087148a065e26a6a540f4481ee.png)
我认为有以下几个原因:
其实十年前我们主要使用的ORM框架就是iBatis,而阿里巴巴是对国内Java开发者影响最大的一家公司。阿里在国内Java社区的影响力有目共睹,这个大家应该都能感受到, 阿里对Java社区贡献了很多实用的开源工具,并且国内Java开发者对于阿里开源的产品接纳程度也最高。
而且早期阿里系离职工程师的影响力也不可小觑,这些从阿里离职的工程师进入了各个规模的公司, 通常也有担任较高的职位, 拥有着相对较多的话语权, 在新公司继续使用自己熟悉的iBatis就是再正常不过的了。
MyBatis封装较少,提供的切入点较多,适合进行架构。遇到超级复杂的场景的时候有不错的sql支持。曾经JPA适合做增删改,mybatis只擅长查询,但是现在的tk.mybatis已经补上了这一块短板,而JPA的依然没有补上他的查询短板。在复杂情况下需要在代码里嵌入大量sql片段或手动用代码拼装sql,但是老实说,都到这份上了,写sql不是还更快一点?因此,做企业级应用时,如果组内Hibernate会的人多,可以考虑用这个,但是依然会埋下一个性能的坑。做互联网级应用时,建议还是用Mybatis吧。
综合考虑,Mybatis的优点是简单高效,优化起来也方便,比较符合现在的开发节奏,现在的互联网公司都是先快速开发占领市场,然后再优化代码。而且这个过程需求经常是变来变去的,开发人员也有流动性,这种情况下用Mybatis显然更加适合。
作者:陈龙
zhihu.com/question/309662829
往期精选 点击标题可跳转
IntelliJ IDEA 使用 spring Initializr 快速搭建 spring boot 项目遇到的坑
面试官问:为什么 MySQL 中的 utf8 并不是真正的 UTF-8 编码?
为什么程序员都说 SELECT * 效率低,那究竟是什么原因造成的?
Spring Cloud 中 Zuul 网关到底有何牛逼之处?竟然这么多人在用!
一次神奇的 sql 查询经历,group by 慢查询优化记录
腾讯 Tendis 正式开源,兼容 Redis 协议企业级分布式高性能 KV 存储数据库
中国铁路 12306 网站的高并发架构带来的思考?研究分析后,果然超牛逼…
IDEA JetBrains 推出 Mono 编程字体真牛逼,更适合程序开发人员!
为什么阿里规范中要求代码禁用 static 修饰 SimpleDateFormat?
心惊肉跳,新来的程序媛妹纸 rm -rf 把公司整个数据库删没了!
点个赞,就知道你“在看”!