当前位置:首页 > 每日看点 > 正文内容

springboot使用mybatis plus总会涉及手写mapper,这么难用为啥还这么多人用?

卡卷网1年前 (2025-01-18)每日看点209

从CRUD工程师到工程师 - MyBatis Plus背后的辛酸史

作为一个从hibernate到mybatis,又到mybatis-plus的菜鸟,我也时常抱怨:为什么"难用"的技术反而大行其道。

springboot使用mybatis plus总会涉及手写mapper,这么难用为啥还这么多人用?  第1张

先说大实话

没错!!MyBatis Plus确实没有Django ORM那么优雅:

springboot使用mybatis plus总会涉及手写mapper,这么难用为啥还这么多人用?  第2张

# Django的写法,优雅如诗 User.objects.filter(age__gt=18).order_by('-create_time')


// MyBatis Plus的写法,像在写SQL @Select("SELECT * FROM user WHERE age > #{age} ORDER BY create_time DESC") List<User> getAdultUsers(@Param("age") Integer age);

为什么还是这么多人用?

Java生态从SSM框架一路发展而来,很多项目就是在老项目基础上迭代。这就像是一个有30年房龄的老小区,虽然新小区设施好,但搬家成本太高。

它对性能掌控还是很精准的

// 自定义SQL,性能自己说了算 @Select("SELECT id, name FROM user WHERE age > #{age} AND city = #{city}") List<User> getUsers(Integer age, String city);

而Django ORM虽然方便,但有时候生成的SQL会让你怀疑人生:

springboot使用mybatis plus总会涉及手写mapper,这么难用为啥还这么多人用?  第3张

SELECT ... FROM ... LEFT JOIN ... LEFT JOIN ... -- 明明只想要两个字段,结果查了整张表

它有很多企业级特性

多数据源动态切换、分页插件全自动配置、乐观锁插件、多租户 这些在企业应用中常见的需求,MyBatis Plus都有现成的解决方案等等......很多情况下这些我们用不着。

SQL掌控度

在复杂业务场景下,有时候真的需要写原生SQL:

// 复杂统计场景 @Select(""" SELECT dept_id, COUNT(*) as count, AVG(salary) as avg_salary FROM employee e LEFT JOIN department d ON e.dept_id = d.id WHERE e.status = 1 GROUP BY dept_id HAVING COUNT(*) > 10 """) List<DeptStats> getDeptStats();

仔细想想的话吧,其实没那么难

springboot使用mybatis plus总会涉及手写mapper,这么难用为啥还这么多人用?  第4张

MyBatis Plus已经帮我们做了很多:

// 增删改查都不用写了 public interface UserMapper extends BaseMapper<User> { } // 一行代码搞定复杂查询 userMapper.selectList( new QueryWrapper<User>() .gt("age", 18) .like("name", "张") .orderByDesc("create_time") );

什么时候用什么?很简单——看复杂度

简单CRUD:直接用BaseMapper

// 不用写任何SQL userMapper.insert(user); userMapper.deleteById(1L);

中等复杂度:用QueryWrapper

QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.select("id", "name", "age") // 指定字段 .gt("age", 18) .orderByDesc("create_time");

复杂查询:自定义SQL

@Select("你的复杂SQL") List<DTO> getComplexData();

MyBatis Plus之所以流行,不是因为它最好用,而是因为它最适合企业级Java应用的实际需求。

如果觉得对你有帮助,点个赞吧!我是旷野,探索无尽技术!

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/9845.html

分享给朋友:

相关文章

4000以下的手机有没有推荐的啊?

4000以下的手机有没有推荐的啊?

可以选择标准版的旗舰机型:vivo X100s、一加12、OPPO Find X7、小米14、iQOO 12;也可以选外观时尚的自拍影像机型:vivo S19 Pro、realme GT 5 Pro、荣耀 200Pro、小米 Civi 4...

你每天用来涨知识的手机应用程序有哪些?

你每天用来涨知识的手机应用程序有哪些?

经过深度使用和测评,从100个APP中选出的这35个超实用的app,每一个都是最硬核最有料的涨知识神器!每天打开看看,能让你提神醒脑,眼界大开,成为朋友聚会上的话题王者!双击屏幕取走哦~先放上全部APP目录,有新闻资讯类、英语学习类、读书类...

NAS那么好,为什么还是没能成为大多数家庭必备的存储设备?

NAS那么好,为什么还是没能成为大多数家庭必备的存储设备?

最主要原因是因为——贵!看看我家里搭建的这一套吧。目前我家中有5台常用的NAS,分别为群晖DS1522+、威联通TS-464C2、绿联DX4600 Pro 、极空间Z4S、威联通TS-AI642。个人认为,这其中的每台NAS都是时代的翘楚,...

如何进行 Elasticsearch 调优实践?

如何进行 Elasticsearch 调优实践?

面试官心理分析这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s ,坑爹了。第一次搜索的...

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

相信很多接触过286的90后朋友都和我有一样的体会,以前的机械键盘真的是让人头皮发麻,不仅敲击要非常用力,而且很吵。所以后面随着大家的生活消费水平的上升,家家户户都有电脑了,自然也不想再用打字来宣扬自己有电脑的优越感,基本上大家都换成了又轻...

鸿蒙系统到底是不是安卓系统?

你好,是的。接下来我给不懂技术的人简单的说一下哄蒙系统的来龙去脉。首先你要知道什么是开源。‌‌开源(Open Source)全称为开放源代码‌,意味着任何人都可以获取和使用软件的源代码,并在遵守版权协议的前提下进行修改和再发布。‌12开源软...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。