当前位置:首页 > 每日看点

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

卡卷网2年前 (2025-01-18)每日看点315

从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

分享给朋友:

相关文章

iPhone真的安全到连FBI也无法破解吗?

iPhone真的安全到连FBI也无法破解吗?

听退伍的一个朋友说部队有一台机器,只要数据线插到手机上,啥数据都能读出来,我问他iPhone也行么,他说可以,不知道是不是真的,部队里应该也没啥人用iPhone吧 --------------------------------------…

曾经很火的迅雷,为什么现在不怎么火了?

曾经很火的迅雷,为什么现在不怎么火了?

3年前,迅雷推出了一项服务,只要2899元就可以享受迅雷终身会员。这个终身会员和付费会员没有区别,付费会员的离线加速、云空间等服务,终身会员都具备。除此之外,终身会员可以在使用1年后就可以全额退款,使用2年后也可以全额退款,使用5年后也是如…

电商专供到底能不能买,除了渠道差异,还有什么差别?

电商专供到底能不能买,除了渠道差异,还有什么差别?

大家应该都经历过,买回来的包装,上面赫然写着四个大字「电商专供」! 然后心里一咯噔,开始各种对比,结果研究了半天,有的能发现区别,有的好像确实也没什么差异。 鉴于大家都有类似经历,本期我们就来聊聊电商专供跟实体之间的关系,顺便告诉大家,…

电视家停运了,目前有没有免费的电视直播软件?

电视家停运了,目前有没有免费的电视直播软件?

内部消息已经出现电视家5.0版 电视家是会停运的衍生品 这里有2个不停运的直接品 一、电视盒子 二、电视机本身 一、关于电视盒子的故事:电视家刚停运几天之后,我家首次花210块买了一年的电视会员。 88岁的亲爷爷喜欢,虽然看不懂电视剧情,架…

做一名网络工程师是什么体验?

做一名网络工程师是什么体验?

过地铁火车安检时,经常会被要求开包检查。。。同时,电脑包的重量普遍比较高。 除了很多打工人必备的笔记本电脑之外,网络工程师还会随身携带部分工具。。。 01.网线(长度不一定,根据工作要求随时被使用。。。) 02.串口线,type-C转接…

高德地图靠什么赚钱?

高德地图靠什么赚钱?

10年前,马云不惜花了88亿把高德地图收入囊中,其实他根本就不想买,因为觉得自己根本用不到,考虑到互联网电商离不开地图导航,犹豫再三还是买下了!业内的很多人觉得他就是一个接盘侠,等着看他笑话。 如今,高德日活跃用户数远超1亿,成为大家出行必…

发表评论

访客

看不清,换一张

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