目录
一步到位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-plus
。Mybatis-plus
是国内开源的Mybatis
的二次封装框架,目前非常流行,去年也是获得了码云中国开源最受欢迎框架的荣誉。挑取了几条Mybatis-plus
官网介绍的特性
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
确定框架
就上述4个框架来说,JdbcTemplate
和Mybatis
是可以直接排除的,开发效率太低下了,但是可以集成JdbcTemplate
做备选。而Spring-data-jpa
和Mybatis-plus
其实在笔者看来是不分伯仲的,就代码质量来说Spring-data-jpa
肯定更好,毕竟Mybatis-plus
还处于不断的优化当中。而就适合本项目而言,其实Spring-data-jpa
是更合适的,对于绝大多数外包项目也是这样,没有太多复杂sql。但是本专题还是觉得集成Mybatis-plus
,毕竟有动态sql的加持,相信适用面更广,对读者帮助更大