请问 mybatis 可以利用 resultMap,免去我写 insert 语句时手写 SQL 的麻烦吗

2023-07-28 08:43:04 +08:00
 BraveXaiver
RT ,我在想 resultMap 既然提供了数据库列列名到 POJO 的成员名间的映射,那 mybatis 有没有提供机制以让 insert 语句和 update 语句反过来利用这个 resultMap 自动将成员名映射到数据库列名啊。。。我现在在做一个三十多个列的数据库的 mapper 层,写 SQL 烦死了。而且项目中已经有大量的 mybatis 的 mapper ,这种情况下引入 JPA 会不会冲突啊。。

另外再问一下,数据库列的列名,它的格式是全大写英文,中间用下划线分割,比如:USER_NAME ,然后 POJO 内的成员,对应这个列的就是 userName 。我记得是不是有个设置 mapping 方式的配置,可以让 mybatis 自动使用这种对应关系,从而做到不用手写 ResultMap ?

谢谢!
1689 次点击
所在节点    问与答
18 条回复
ZGame
2023-07-28 08:50:36 +08:00
这是 orm 做的事情 ,可以关注一下 mybatis-plus...
BraveXaiver
2023-07-28 08:53:02 +08:00
@ZGame mybatis-plus 也算是久仰大名了,就这个需求,plus 有对应的功能吗?可以给个关键词我搜下吗
lsk569937453
2023-07-28 09:00:04 +08:00
简单的增删改查一律 mybatis-plus
litchinn
2023-07-28 09:01:08 +08:00
不是可以生成吗,然后复制修改,还嫌麻烦就换 mybatis-plus
insert 直接利用 resultMap 应该不行,但是可以使用<sql>标签来达到复用大量重复内容的目的
JYii
2023-07-28 09:23:15 +08:00
下划线转驼峰:map-underscore-to-camel-case
VersionGod1
2023-07-28 09:34:33 +08:00
mybatis-plus ,非常方便。你说的 pojo 类和数据库列名的对应关系,按照你的格式 mybatis-plus 可以自动转换对应。
miaotaizi
2023-07-28 09:44:15 +08:00
service 里面的 saveBatch 满足不了你还是 咋地?
miaotaizi
2023-07-28 09:45:06 +08:00
@miaotaizi mybatis-plus 里面的 功能
BraveXaiver
2023-07-28 09:51:23 +08:00
@JYii
@litchinn
@lsk569937453
@miaotaizi
请问下,我用 mybatis-plus 试了下,但当前有个问题,驼峰转英文加下划线,转出来的列名格式是对的,但是列名是小写,数据库里的是大写,这咋整啊
wxlwsy
2023-07-28 09:53:25 +08:00
我讨厌 xml, 所以我用了动态 SQL,就是 Mybatis-Dynamic-Sql.
除非个性查询, 一般都是整条数据存储不用额外写什么.
遇到特殊需求就是需要你去拼写 sql, 这种最方便还是直接写 sql 字符串,没有之一!!!
但是,就是但是直接写 sql 字符串不优雅,更重要的是不安全.而且如果你数据表结构发生变化,编译时期无法检测错误.
像 java 这种语言,能编译检测的错误为何要留在运行时去发现对吧?你改个表字段,导出数据库对应的 java 文件,一编译就能发现哪里报错字段不兼容了.
miaotaizi
2023-07-28 09:53:40 +08:00
用之前不是应该先查阅一下文档吗?
在这问比较快?
ljsh093
2023-07-28 10:16:08 +08:00
@BraveXaiver #2 USER_NAME 对应 do 的 userName 这种简单的 crud 可以用 mp 自带的实现类实现,就是个.updateById 的事情
willxiang
2023-07-28 10:32:34 +08:00
配置文件:
mybatis-plus.configuration.db-column-underline=true

或者使用注解单独设置:
@TableField(value = "USER_NAME")
private String userName;
Navee
2023-07-28 10:39:15 +08:00
InkAndBanner
2023-07-28 10:40:04 +08:00
mybatisPlus 是个很好用的毒药 简化开发 天然支持多租户 同时侵占 mapper 层甚至 service 层
InkAndBanner
2023-07-28 10:41:15 +08:00
JYii
2023-07-28 11:17:16 +08:00
@BraveXaiver #9 看下 db 是否大小写敏感咯,图省事配置成不敏感就结了
key0323
2023-07-28 13:43:30 +08:00
从这个问题的回答量能看出 v 站用户对摸鱼的热衷程度

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

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

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

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

© 2021 V2EX