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

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

卡卷网7个月前 (01-18)每日看点132

从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

分享给朋友:

相关文章

PS有哪些实用小技巧,小白也能一学就会?

PS有哪些实用小技巧,小白也能一学就会?

不看后悔系列!本篇分享25个PS实用的技巧!不能保证每个都能让你惊艳,但是却是我用心写出来的,希望对你有帮助。另外我的知乎也写了接近200篇PS的技巧,超级合集分享!我目前正在带一个PS/Ai的软件训练营,两个多月搞定两大软件的学习详细的内...

电视上哪个软件可以免费看电视直播?

电视上哪个软件可以免费看电视直播?

今天给大家推荐8款免费电视端直播看剧软件,感兴趣的朋友可以下载试一试!1、超级ITV 6.04免费看电视直播,央视卫视高清秒播,还有电影电视剧少儿体育等。2、小鲸电视 1.3.1小鲸电视是一款智能电视应用,集成了多个内容来源,包括腾讯视频、...

网页上的视频怎么下载呀?

网页上的视频怎么下载呀?

1、贝贝BiliBili - B站视频下载https://xbeibeix.com/api/bilibili/贝贝BiliBili 是个免费、免登录的bilibili视频下载工具,没有任何套路。把视频链接粘贴进去 → 输入验证码 → 解析视...

为什么大家不再提 5G 了?

现在看来,只有美国那种5g的思路是对的。美国的运营商一开始就发现5g和4g并没有质的飞跃,无非就是提升频率/降低穿透力/提升带宽的故事。而美国运营商又是自负盈亏,因此一开始就仅在人口高密度地区或富裕地区布置5g。虽然说人家4g也菜,但是人家...

感觉手机配置都差不多,为什么有的手机能卖2k-3k,而有的手机却能卖到6k-8k?

感觉手机配置都差不多,为什么有的手机能卖2k-3k,而有的手机却能卖到6k-8k?

与所有的商品一样,手机的价格,也是由它的成本所决定的。虽然看起来3000元的手机和6000的手机配置差不多,甚至处理器都可能是同一个,但在很多大家容易忽略的地方,决定了两者价格的不同:例如手机的外观,塑料的机身,与素皮机身和玻璃机身就完全不...

到什么程度才叫精通 Linux?

我们医院有个大牛。有一次,我的Linux电脑下载了Microsoft office 365 不能运行。于是买了2.5升装康师傅冰红茶找到大牛,让他帮忙解决。大牛白了我一眼,让我把安装包发给他,只见他输入一个命令将安装包打开,整个屏幕都是数字...

发表评论

访客

看不清,换一张

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