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

APPROVE_TODO_STAFF 是数据库的字段名字, 对应 java entity 里的一个字段 approveTodoStaff, 有时候用 IDE 对 approveTodoStaff重构, APPROVE_TODO_STAFF 不会自动修改,就漏了.
我的问题是, 有办法消除 APPROVE_TODO_STAFF 吗?
俺用 mybatis-plus 做业务的时候, 经常碰到需要用 apply 自定义 sql 的场景, 像这样

APPROVE_TODO_STAFF 是数据库的字段名字, 对应 java entity 里的一个字段 approveTodoStaff, 有时候用 IDE 对 approveTodoStaff重构, APPROVE_TODO_STAFF 不会自动修改,就漏了.
我的问题是, 有办法消除 APPROVE_TODO_STAFF 吗?
|
1
可以通过 lambda 表达式获取字段名,然后驼峰转下划线获取
```java LambdaMeta meta = LambdaUtils.extract(Project::getResearchType); String fieldName = PropertyNamer.methodToProperty(meta.getImplMethodName()); fieldName = StrUtil.toUnderlineCase(fieldName); ``` |
|
montaro2017Aug 9, 2024
2
@montaro2017 #1 驼峰转下划线可以直接使用 mp 内置工具类
fieldName = StringUtils.camelToUnderline(fieldName); |
|
3
歪个楼,这样写有可读性可言吗?
|
|
hapemanAug 9, 2024
5
反射?
|
|
hyqCrystalAug 9, 2024
6
我觉得简单的用 mybatis plus 无可厚非 复杂的写自定义 sql 可读性 维护性高点
|
|
adimnAug 9, 2024
8
这种这么长的查询,建议你直接写 sql , 不要用 mybatis plus , 我都是简单查询和更新才用 plus
|
|
BiChengfeiAug 9, 2024
9
insert
updteById 小表查询直接用 .selectList(Wrappers.emptyWrapper()).stream().filter()..... 内存查找 复杂查询用 xml ,千万别用 like()、in() 这些函数 |
|
wuvvuAug 9, 2024
10
问个题外话,这个显示缩进的是怎么实现的,是插件吗
|
|
flowerainsAug 9, 2024
11
plus 的重点是简化你的单表查询负担,用 querywrapper 构造一些简单应用增删改查
像你写的这种就应该用 mybatis 自带的,直接在 xml 中写 SQL |
|
12
写个自定义的方法支持下就好了 ColumnUtil.getColumnName(Approve::getApproveTodoStaff)
感觉还是直接写 sql 更直观,好维护点 |
|
laikickaAug 9, 2024
13
多表的时候还是喜欢写 sql.
|
|
angeninAug 9, 2024
14
简单的查询用 plus ,复杂的还是写 sql 吧
|
|
15
@SmartTom 哈哈可读性好不好不确定, 反正写起来挺快的;
|
|
reavidAug 9, 2024
16
折腾来折腾去,最后还是只用 mybatis 和生成工具。
|
|
17
|
|
18
@hyqCrystal 只是看起来查询条件很多, 其实都是简单的条件查询, 只涉及到单个表
|
|
ZZ74Aug 9, 2024
19
这种东西写成 java 代码 真的..... 不如直接 sql
|
|
pangdundun996Aug 9, 2024
20
@xiaoyureed #15 xml 写 sql 不是更快吗
|
|
fpureAug 9, 2024
21
真的,很不建议使用这种 mp 的类 queryDSL 的方式进行查询,原因有三:一、污染 service 层;二、毫无可读性;三、代码被 mp 侵入,以后想摘掉 mp 也难弄了
|
|
iszhouyuAug 9, 2024
22
为啥我用的 mp 没见过.nested()这方法
|
|
marking0614Aug 9, 2024
23
复杂的 SQL 直接 xml 啊,这不给自己找罪受
|
|
ShuangChenyueAug 9, 2024
24
这不算复杂查询把
都是 where 条件判断 感觉写 xml 不如这样写 |
|
IakihsougAug 9, 2024
25
生成 entity 时加上 enableColumnConstant()开启生成字段常量,字符串用常量代替 GpReportEntity.APPROVE_TODO_STAFF
|
|
elepantAug 9, 2024
26
能不用 mybatis plus 就不用吧
|
|
635925926Aug 9, 2024
27
@pangdundun996 用 orm 不用考虑逻辑删除。手写 sql 每个 sql 都要加上逻辑删除的条件
|
|
zoharSoulAug 9, 2024
28
这种建议在 xml 里写 sql
|
|
joker8renAug 9, 2024
29
看到那么长一串 就没有阅读的欲望了
|
|
30
@pangdundun996 总觉得 xml 更麻烦, 可能心理作用
|
|
SmartTomAug 9, 2024
31
@xiaoyureed #30 没那么麻烦,谨慎一点我都是在 nav 上跑一边手写的 sql ,没啥问题直接扔到 xml 中。
|
|
sagaxuAug 9, 2024
32
@xiaoyureed XML 是更麻烦,但是在 Java 良好支持多行字符串模板前,也只能这样了。不过也快了,2030 年之前应该能用上。
|
|
vansiitAug 9, 2024
33
我一直在推荐用 xml 写 sql ,这个问题简直是一个活生生的例子。而且如果是多人团队,我是旗帜鲜明发反对引入 mybatis plus 和 jpa ,原因就是控制不了有人这么玩
|
|
caixiaomaoAug 9, 2024
35
我去,看都不想看,还是用 xml 写吧😀
|
|
MandeloAug 9, 2024
36
没法考出来测试和优化吧
|
|
sagaxuAug 9, 2024
37
@SmartTom String Templates Java 21 才有预览版,Java 22 是 Second Preview ,到 Java 23 时放弃了。
https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html |
|
burymme11Aug 9, 2024
38
Mybatis plus 只用来做单表的简单 CURD ,复杂 SQL 一律走 XML 。
别说多人团队了,哪怕就自己写的,两个月后再回头看看,都想扇自己嘴巴。 |
|
39
lombok 有个注解,@FieldNameConstants ,可以生成属性的字符串
|
|
SurechunAug 9, 2024
40
简单直接写,复杂的用 sql ,方便后期调优。
|
|
luozicAug 10, 2024
41
复杂的,请上 xml
|
|
TenlearnAug 11, 2024
42
简单的 crud 和几个条件的查询用代码实现,像你这种,直接写 xml 更直观
|
|
lingalonelyAug 11, 2024
43
直接写 SQL 吧
|
|
diagnosticsAug 14, 2024
44
Mybatis Plus 作者那个态度,我是不敢用,出问题不好沟通来修复
|
|
fkdogSep 14, 2024
45
mybatisplus 是针对国产 crud 宝宝体质特别开发的猪食。
|