L0L
V2EX  ›  Java

MyBatis 框架大家在使用的吗?

  •  1
     
  •   L0L · Apr 12, 2023 · 21704 views
    This topic created in 1305 days ago, the information mentioned may be changed or developed.

    各位 V 友,大家日常开发中,还有使用 mybatis 的框架的吗?

    google 了下,发现流行的框架中基本看不到他的影子,但是在传统行业的工作中,感觉还是用到的很多,来到 v 站问问广大的 v 友日常使用的还算多吗?

    138 replies  •  2023-04-25 19:40:30 +08:00
    1  2  
    ❮ ❯
    zjsxwc
    zjsxwc
    Apr 13, 2023
    101
    @billccn
    yaml 是 json 的超集,完全兼容 json ,
    君不见那么多给予 json 的 orm ,
    用 yaml 做 orm 就更不在话下了,
    比如 python 的 mlalchemy 就是 yaml

    https://pypi.org/project/mlalchemy/
    ysq
    ysq
    Apr 13, 2023
    102
    @Huelse 这个还没 SQL 看着清晰呢
    RainCats
    RainCats
    Apr 13, 2023
    103
    mybatis-plus 很舒服,简单 SQL 直接条件构造就完事了,复杂 SQL 丢 XML 里,谁来都能维护,甚至不需要懂 Java
    dbpe
    dbpe
    Apr 13, 2023❤️1
    104
    ebean 因为有 oracle 的需求..导致上不了 jooq..复杂查询在用 mybatis...(如果升到了 17...mybatis 我准备去掉他
    BenX
    BenX
    Apr 13, 2023
    105
    Java 圈毒瘤
    Leviathann
    Leviathann
    Apr 13, 2023
    106
    @lanlanye mybatis 所谓的新,和 go ( goroutine 以外的部分)所谓的新是一个意思
    yifeng33
    yifeng33
    Apr 13, 2023
    107
    前司某里用的 mybatis ,现在用的 jpa 。感觉写复杂查询 jpa 比较累人,比如多表联查
    Cruzz
    Cruzz
    Apr 13, 2023
    108
    @yifeng33 整不明白别用 jpa 级联查询,一个 byid 能让其他人崩溃。无脑吹 jpa 的都是玩具项目的玩具人。没有最好只有适合。
    cheng6563
    cheng6563
    Apr 13, 2023
    110
    Java 语言本身的表达能力本来就一坨,SQL 也是个极为拧巴的语言。用“Java 代码自动转 SQL”的方式来操作数据库有多别扭可想而知。
    最好的方法还是自己处理好 SQL 喂给数据库,所以需要一个对 SQL 优化的模板引擎,那就是 Mybatis(-plus)了。当然,Mybatis 同类更优雅的库也有,但也拉不开大差距,而且 Mybatis(-plus)用的多好招人,那就选 Mybatis(-plus)咯。
    shyangs
    shyangs
    Apr 13, 2023❤️2
    111
    @Richared

    Spring Data JPA 是商業公司出的項目。我相信 Spring 的眼光。一些玩具項目,像阿里巴巴的 Fastjson 吹上天,Spring 也只會內建 Jackson ,不會推薦玩具項目的。
    lanlanye
    lanlanye
    Apr 13, 2023
    112
    @xiaocaiji111 #98 ORM 一般会提供只生成 SQL 不实际执行的功能,以供人在关键的地方编写测试来确保生成的 SQL 是正确的。不过这样的话就和手写 SQL 没什么区别了,所以如果追求每个 SQL 都测的话用 ORM 就没什么特别的优势,反过来说,不需要每个都测时它挺有用的。
    Huelse
    Huelse
    Apr 13, 2023
    113
    @ysq 如果你没接触过当然会觉得不清晰,而且 orm 和纯 sql 的讨论极易引战,就不过多讨论了
    astkaasa
    astkaasa
    Apr 13, 2023
    114
    spring data jdbc 很好用, 可以复用老代码的 xml
    amwyyyy
    amwyyyy
    Apr 13, 2023
    115
    @sqmwin 偷懒省事,早点下班
    zoharSoul
    zoharSoul
    Apr 13, 2023
    116
    @Huelse #95 太复杂了. 感觉没 sql 好看懂
    dog82
    dog82
    Apr 13, 2023
    117
    在 hibernate 里写 hql 就是脱裤子放屁,不如直接 sql 梭哈
    witcherhope
    witcherhope
    Apr 13, 2023
    118
    @Huelse #113 但是相比 Mybatis 这种 Raw SQL ,即使没接触过框架,应该也能立马理解上手,这也算事优势吧,低协作成本;再者 SQL 本身就是面向过程的思想,强行用 Java 的 OOP 硬套就显得有点拧巴。
    zhengzhongzhao
    zhengzhongzhao
    Apr 13, 2023
    119
    @zero47 最讨厌 sql 了,您的意思是?
    outerws
    outerws
    Apr 14, 2023
    120
    楼上一个个都在脱裤子放屁,成熟的大并发服务下为什么阿里京东采用 mybatis ?因为它能撑得住流量经得住考验是成熟架构技术,一堆技术哪个不能开发业务逻辑?又有哪几个能支撑得住业务流量?不考虑流量我都按 10 并发来做还搞什么技术啊?一个数据库打遍天下得了
    e7
    e7
    Apr 14, 2023
    121
    不要以为大厂会紧跟新技术,稳定才是第一位的
    MonkeyCoder
    MonkeyCoder
    Apr 14, 2023
    122
    mybatis plus 用代码生成直接把 xml 的 CRUD 就搞定了有什么麻烦,剩下复杂的多条件查询和多表联查这些操作搭配 mybatis coder helper 插件很方便啊.不习惯把 sql 写到代码里
    Aresxue
    Aresxue
    Apr 14, 2023
    123
    mybatis plus 做二开,java 对于 sql 这块目前没看到很好的管理方式,orm 框架在中型系统里面就开始捉襟见肘了,真的使用下来说实话用 xml 维护 sql 竟然还是目前综合性最好的方式( xml 的描述能力真的很强大),只是说 xml 在可读性上真的不好,针对这一点可以自己用别的协议重写这一部分,但 mybatis 本身也足够简洁了建议换个皮就行了,从 XXX.xml 换成 XXX.sql 把原先 xml 中的信息冗余消灭一下,但 xml 中绝大多数内容还是 sql 本身所以可优化的空间也很有限。sql 目前在编程语言里最好的实践感觉是 linq ,但 jvm 不支持动态编译函数所以没法抄作业。
    PVXLL
    PVXLL
    Apr 14, 2023
    124
    @Richared 什么级别的项目才不算是玩具项目,工作这么久一直 jpa ,没觉得有什么问题。
    Cruzz
    Cruzz
    Apr 14, 2023
    125
    @PVXLL 就问你最简单的问题,一对多一对一,级联查询怎么搞的。
    chiyagao
    chiyagao
    Apr 14, 2023
    126
    看完后大家的评论,我感觉我是低级程序员。。。
    PVXLL
    PVXLL
    Apr 14, 2023 via iPhone
    127
    @Richared 如果你连这么基础的东西都写出不来,还是写你的 mybaties 吧
    Cruzz
    Cruzz
    Apr 17, 2023
    128
    @PVXLL 单走一个 6 ,孩子好好学习吧。别天天写个 demo 就出来装逼
    PVXLL
    PVXLL
    Apr 17, 2023 via iPhone
    129
    @Richared 像你这种菜鸡 onetomany manytoone 都搞不懂的菜鸡不配和我讨论,乖乖面向你的 sql 编程,别出来丢人了
    leatomic
    leatomic
    Apr 18, 2023
    130
    @Richared 其实你大可直接一点,说说什么业务才不算你们口中的 demo 项目的,然后贴具体涉及的实体(关系描述就行),以及需要搞定的需求。包括你要吐槽的点,是实现不了,还是按你们的理解只能如何实现怎么个麻烦法,还是怎么个不优雅法。
    Cruzz
    Cruzz
    Apr 19, 2023
    131
    @leatomic 我说的很明白了,就很简单一对多。我有 10 个数据源,每个数据源有 100 张表。每张表平均 10 个字段,实体有数据源,表元数据,字段信息。我 selectby 数据源 id 。
    leatomic
    leatomic
    Apr 20, 2023
    132
    @Richared 嗯,然后重点呢?“包括你要吐槽的点,是实现不了,还是按你们的理解只能如何实现怎么个麻烦法,还是怎么个不优雅法。”
    Cruzz
    Cruzz
    Apr 20, 2023
    133
    @leatomic 写法重要么?当我只查数据源信息,或者需要此数据源下的所有表的元数据,或者需要查到表的字段。还没发现问题么?
    leatomic
    leatomic
    Apr 20, 2023
    134
    @Richared 这是你的需求是吧,那你要吐槽的点呢?是无法实现只提取必要的属性节点的吧?
    如果是。把查询和命令区分开来,这种查询使用 EntityGraph 应该能解决才对,能说说怎么无法实现你的点在哪吗?当然实际开发中会使用 Spring ,结合其提供的 @EntityGraph 使用更方便;
    鉴于你的查询条件单纯用 ById ,像 CriteriaQuery 、结合 QueryDSL 就没必要提了,如果不要求将结果组装成实体类型的,要返回 Projection 的话,无论 JPA(Hibernate)还是 Spring 也都有提供相关的支持的。
    bthulu
    bthulu
    Apr 23, 2023
    135
    @suyabgaran 我司全是 oracle, 也有免费的 jooq 用么
    leatomic
    leatomic
    Apr 25, 2023
    136
    @Richared 兄弟,你要吐槽的到底啥呀?你不回我的话我是不是就可以理解为是想装死了?
    Cruzz
    Cruzz
    Apr 25, 2023
    137
    @leatomic 你以为上班就是刷 v2ex? 1.当我 selectbyid 的时候,不是所有水平的开发都明白 jpa 选择需要查询的子集,但是他们知道 sql 怎么写。2.当你发现一个 selctbyid 查询返回 50w 行的时候,而且是屎山让你优化的时候,你就知道 jpa 能不用就别用,自己用可以。别人没人管你这个 byid 查的是啥,我需要啥就往里 @OneToMany ,管你需要啥,反正不少就不会报错。我完成我的任务就 ok 了
    leatomic
    leatomic
    Apr 25, 2023
    138
    @Richared 上次回复是 5 天前了呀!当然你回我了就无所谓了。后面的感觉辩下去没意义了,就这样吧
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   833 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 23:38 · PVG 07:38 · LAX 15:38 · JFK 18:38
    ♥ Do have faith in what you're doing.