请教 Mybatis plus 用法

135 天前
 xiaoyureed

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

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

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

6447 次点击
所在节点    Java
45 条回复
montaro2017
135 天前
可以通过 lambda 表达式获取字段名,然后驼峰转下划线获取
```java
LambdaMeta meta = LambdaUtils.extract(Project::getResearchType);
String fieldName = PropertyNamer.methodToProperty(meta.getImplMethodName());
fieldName = StrUtil.toUnderlineCase(fieldName);

```
montaro2017
135 天前
@montaro2017 #1 驼峰转下划线可以直接使用 mp 内置工具类
fieldName = StringUtils.camelToUnderline(fieldName);
SmartTom
135 天前
歪个楼,这样写有可读性可言吗?
vishun
135 天前
@SmartTom #3 曾经我也认为这样用 ORM 是更现代的方式,但是后来慢慢觉得这样真的是没有 xml 中写的直观和有可读性。
hapeman
135 天前
反射?
hyqCrystal
135 天前
我觉得简单的用 mybatis plus 无可厚非 复杂的写自定义 sql 可读性 维护性高点
wetalk
135 天前
@SmartTom 我认为没有,属于把 plus 用歪了
ma836323493
135 天前
这种这么长的查询,建议你直接写 sql , 不要用 mybatis plus , 我都是简单查询和更新才用 plus
BiChengfei
135 天前
insert
updteById
小表查询直接用 .selectList(Wrappers.emptyWrapper()).stream().filter()..... 内存查找
复杂查询用 xml ,千万别用 like()、in() 这些函数
wuvvu
135 天前
问个题外话,这个显示缩进的是怎么实现的,是插件吗
flowerains
135 天前
plus 的重点是简化你的单表查询负担,用 querywrapper 构造一些简单应用增删改查

像你写的这种就应该用 mybatis 自带的,直接在 xml 中写 SQL
shuqin2333
135 天前
写个自定义的方法支持下就好了 ColumnUtil.getColumnName(Approve::getApproveTodoStaff)


感觉还是直接写 sql 更直观,好维护点
laikick
135 天前
多表的时候还是喜欢写 sql.
angenin
135 天前
简单的查询用 plus ,复杂的还是写 sql 吧
xiaoyureed
135 天前
@SmartTom 哈哈可读性好不好不确定, 反正写起来挺快的;
fangxisama
135 天前
折腾来折腾去,最后还是只用 mybatis 和生成工具。
xiaoyureed
135 天前
xiaoyureed
135 天前
@hyqCrystal 只是看起来查询条件很多, 其实都是简单的条件查询, 只涉及到单个表
ZZ74
135 天前
这种东西写成 java 代码 真的..... 不如直接 sql
pangdundun996
135 天前
@xiaoyureed #15 xml 写 sql 不是更快吗

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

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

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

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

© 2021 V2EX