关于 mybatis 的疑惑

2023-11-13 09:45:56 +08:00
 gomorebug

新手刚学 mybatis ,发现每次使用都要配一堆层,所以心中有个疑惑,为啥这么麻烦还是有一堆人用?是因为在实践中可以解决啥问题吗

6853 次点击
所在节点    Java
83 条回复
Navee
2023-11-13 09:51:08 +08:00
门槛低:
只要你 sql 写得好,mybatis 用起来就不会有太大问题;但是你 sql 写得好 jpa 也不一定玩得转
对数据库设计要求低:
想怎么设计就怎么设计,只要你的 sql 写得出来,而且工作量不会增加太多; jpa 就得按照规范设计,不按照规范就会陡增工作量
netabare
2023-11-13 09:52:11 +08:00
我也不懂为什么这玩意这么多人用,国外的 JPA 和 Hibernate 感觉用起来舒服多了,虽然细节坑不少但多查查文档翻一下社区也能弄出七七八八来,而且兼容性更好。
ForkNMB
2023-11-13 09:54:55 +08:00
那为什么不用 mybatis-plus 呢
justplaymore
2023-11-13 09:56:15 +08:00
为了避免配置繁杂问题,用起来更方便,所以有了 mybatis-plus 。
murmur
2023-11-13 09:59:43 +08:00
你可以把 service 层省掉,就留一个 controller
murmur
2023-11-13 10:00:39 +08:00
@netabare 现在的低代码框架可以直接生成 CURD 包括多表带条件代码,生成不了的肯定比这个复杂,一般都是报表或者树啊嵌套查询这类的,都是得手写 sql 的,手写 sql 还是 mybatis 用着舒服
gejun123456
2023-11-13 10:06:52 +08:00
业务简单直接 controller 调用 mapper 就行,有各种代码生成器,使用中坑少学起来快,很快就能上手干活
xslong
2023-11-13 10:09:52 +08:00
直接用 mybatis-plus 舒服很多;
再用 Hibernate 完成同样的功能(特别是关联表)就会更明白他们的差异,Hibernate 并不是所有人都可以玩得溜;
looo
2023-11-13 10:15:51 +08:00
JPA+QueryDSL
28Sv0ngQfIE7Yloe
2023-11-13 10:17:04 +08:00
JPA 需要符合规范的设计,但是业务中你很难从头设计库表,很多情况下是接烂摊子
xkxwd
2023-11-13 10:17:16 +08:00
你把其他 orm 框架都用一遍,再选觉得顺手的就行,每个人体质都不一样,不一定用的多的就适合你。
当然公司里团队协作需要技术栈统一除外
yosoroAida
2023-11-13 10:17:54 +08:00
直接用 mybatis-plus 会舒服很多,单纯用 mybatis 就要写很多繁杂的东西
zhazi
2023-11-13 10:19:52 +08:00
你说的分层是软件架构设计,跟用什么工具没关系,跟什么语言也没关系。
层是分离职责和管理依赖关系的方式。 每个层都有特定的责任。 较高层可使用较低层中的服务,反之则不行。
传统的三层应用程序有表示层、中间层和数据库层。 中间层是可选的。 更复杂的应用程序可以多于三层。
NizumaEiji
2023-11-13 10:21:30 +08:00
一堆层是指啥啊 这个和 mybatis 关系也不大把
weijancc
2023-11-13 10:26:01 +08:00
@murmur service 层是有必要的, 去掉后就变成业务代码在 controller 了, 代码贼脏, service 层直接写实现类不要弄个接口就好了.
Goooooos
2023-11-13 10:28:40 +08:00
简单项目我都用 jdbctemplate
lsk569937453
2023-11-13 10:35:48 +08:00
@netabare hibernate 的问题在于 sql 一复杂就嗝屁了。
GoflyYang
2023-11-13 10:39:17 +08:00
我觉得配置也没有多复杂,特别是配合 Springboot 配置也没有那么复杂,最主要是可以自定义 sql
winnie414
2023-11-13 10:39:58 +08:00
单论 mybatis 我觉得不好用 mybatis-plus 也是
angryfish
2023-11-13 10:41:32 +08:00
@weijancc service 不是必要的,看业务复杂度。1.去掉 service 接口,直接用 service 类 2.大多数接口在 controller 写了,因为逻辑并不复杂,只有遇到逻辑很多的才在 service 写。所以 service 的代码其实很少也很好看。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/991335

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX