一步到位springboot 04:ORM框架选型

目录

一步到位springboot目录
gitee:https://gitee.com/chaitou/leilema.git

前言

毁掉一个程序员最好的作法莫过于让他CRUD一辈子。

-- 累了吗首席架构师:bugpool

谈到CRUD简直就是开发人员的噩梦,如果一辈子只干CRUD,那简直就是代码界的农民工,跟搬砖没什么区别。但是现在不一样了,现在的你是累了吗架构师,你是制定CRUD的人!你选型的CRUD关乎整个项目组的开发效率,更关乎到整个项目的执行性能!

因此本篇将先对比当下常用的ORM框架,选型,然后学习Mybatis-plus的集成(剧透了)以及简单使用

框架选型

世界哪有什么最好的框架?只有最适合的框架罢了。

-- 又是那个装逼大师:bugpool

JdbcTemplate

效率最高,但是开发效率就…先来感受一下JdbcTemplate的查询语句怎么写吧

String sql="select * from product_info where product_name = :productName";
Map queryMap = new HashMap();
queryMap.add("productName", "古典推拿");
jdbcTemplate.query(sql, queryMap);

对于架构师来说,选择JdbcTemplate是肯定不会遇到性能瓶颈以及功能性问题的,但是只集成了JdbcTemplate的架构师我相信肯定是要被开发人员拿刀追着砍的。天天写上面那些sql的,这谁顶得住啊!
这谁顶得住啊

Mybatis

上手容易,效率也高,自定义sql支持好,动态sql写的啪啪的。但是头疼的是要写xml文件,特别是有一些很傻叼的按个字段查询的sql都得写xml,来感受一下Mybatis的代码

<select id="findByProductName"
     resultType="ProductInfo">
  select * from product_info where
  <if test="productName != null">
    product_name = #{productName}
  </if>
</select>

就算有许多代码生成工具跟插件,但是看到这些代码我就脑瓜疼!

Spring-data-jap

不用看,spring亲儿子,执行效率的话三者最差,但是其实跟Mybatis是差不了多少的。优点是提供了很多默认的查询方法,查起来算是相当爽了。来感受一下

// dao层
interface ProductInfoRepository extends Repository<ProductInfo, Long> {
  List<ProductInfo> findByProductName(String productName);
}

// 调用
List<ProductInfo> productInfo = repository.findByProductName("大保健");

就单表的CRUD,包括模糊查询,自动填充等支持都相当好,而且也可以自定义sql,不愧是亲儿子。但是对于多表联查,复杂动态sql显然就没有Mybatis来的好了

Mybatis-plus

开发:“那有没有一种框架,我即要单表简单的CRUD都不用自己写,但是我又想用Mybatis的动态写复杂sql”
难伺候
好吧,有的,那就是今天要介绍的Mybatis-plusMybatis-plus是国内开源的Mybatis的二次封装框架,目前非常流行,去年也是获得了码云中国开源最受欢迎框架的荣誉。挑取了几条Mybatis-plus官网介绍的特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

确定框架

就上述4个框架来说,JdbcTemplateMybatis是可以直接排除的,开发效率太低下了,但是可以集成JdbcTemplate做备选。而Spring-data-jpaMybatis-plus其实在笔者看来是不分伯仲的,就代码质量来说Spring-data-jpa肯定更好,毕竟Mybatis-plus还处于不断的优化当中。而就适合本项目而言,其实Spring-data-jpa是更合适的,对于绝大多数外包项目也是这样,没有太多复杂sql。但是本专题还是觉得集成Mybatis-plus,毕竟有动态sql的加持,相信适用面更广,对读者帮助更大

发布了58 篇原创文章 · 获赞 281 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/chaitoudaren/article/details/105602731