请教 Mybatis plus 用法

2024-08-09 08:55:10 +08:00
 xiaoyureed

俺用 mybatis-plus 做业务的时候, 经常碰到需要用 apply 自定义 sql 的场景, 像这样

APPROVE_TODO_STAFF 是数据库的字段名字, 对应 java entity 里的一个字段 approveTodoStaff, 有时候用 IDE 对 approveTodoStaff重构, APPROVE_TODO_STAFF 不会自动修改,就漏了.

我的问题是, 有办法消除 APPROVE_TODO_STAFF 吗?

7387 次点击
所在节点    Java
45 条回复
fpure
2024-08-09 10:30:18 +08:00
真的,很不建议使用这种 mp 的类 queryDSL 的方式进行查询,原因有三:一、污染 service 层;二、毫无可读性;三、代码被 mp 侵入,以后想摘掉 mp 也难弄了
iszhouyu
2024-08-09 10:41:17 +08:00
为啥我用的 mp 没见过.nested()这方法
marking0614
2024-08-09 10:41:28 +08:00
复杂的 SQL 直接 xml 啊,这不给自己找罪受
ShuangChenyue
2024-08-09 11:02:05 +08:00
这不算复杂查询把
都是 where 条件判断 感觉写 xml 不如这样写
Iakihsoug
2024-08-09 11:15:06 +08:00
生成 entity 时加上 enableColumnConstant()开启生成字段常量,字符串用常量代替 GpReportEntity.APPROVE_TODO_STAFF
Asan
2024-08-09 11:48:48 +08:00
能不用 mybatis plus 就不用吧
635925926
2024-08-09 13:23:36 +08:00
@pangdundun996 用 orm 不用考虑逻辑删除。手写 sql 每个 sql 都要加上逻辑删除的条件
zoharSoul
2024-08-09 13:24:06 +08:00
这种建议在 xml 里写 sql
joker8ren
2024-08-09 13:38:49 +08:00
看到那么长一串 就没有阅读的欲望了
xiaoyureed
2024-08-09 13:50:16 +08:00
@pangdundun996 总觉得 xml 更麻烦, 可能心理作用
SmartTom
2024-08-09 14:56:26 +08:00
@xiaoyureed #30 没那么麻烦,谨慎一点我都是在 nav 上跑一边手写的 sql ,没啥问题直接扔到 xml 中。
sagaxu
2024-08-09 15:05:25 +08:00
@xiaoyureed XML 是更麻烦,但是在 Java 良好支持多行字符串模板前,也只能这样了。不过也快了,2030 年之前应该能用上。
vansiit
2024-08-09 15:20:53 +08:00
我一直在推荐用 xml 写 sql ,这个问题简直是一个活生生的例子。而且如果是多人团队,我是旗帜鲜明发反对引入 mybatis plus 和 jpa ,原因就是控制不了有人这么玩
SmartTom
2024-08-09 15:35:25 +08:00
@sagaxu 多行字符串? JDK17 不就有类似于 python 中的'''了吗。。。汗颜
caixiaomao
2024-08-09 15:53:20 +08:00
我去,看都不想看,还是用 xml 写吧😀
Mandelo
2024-08-09 16:05:58 +08:00
没法考出来测试和优化吧
sagaxu
2024-08-09 16:57:38 +08:00
@SmartTom String Templates Java 21 才有预览版,Java 22 是 Second Preview ,到 Java 23 时放弃了。

https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html
burymme11
2024-08-09 18:03:36 +08:00
Mybatis plus 只用来做单表的简单 CURD ,复杂 SQL 一律走 XML 。
别说多人团队了,哪怕就自己写的,两个月后再回头看看,都想扇自己嘴巴。
winlans
2024-08-09 18:09:25 +08:00
lombok 有个注解,@FieldNameConstants ,可以生成属性的字符串
Surechun
2024-08-09 19:42:30 +08:00
简单直接写,复杂的用 sql ,方便后期调优。

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

https://ex.noerr.eu.org/t/1063653

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

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

© 2021 V2EX