V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
L0L
V2EX  ›  Java

MyBatis 框架大家在使用的吗?

  •  1
     
  •   L0L · 168 天前 · 13870 次点击
    这是一个创建于 168 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    138 条回复    2023-04-25 19:40:30 +08:00
    1  2  
    ghost024
        1
    ghost024  
       168 天前
    肯定多啊,小厂和中厂都在用吧
    leozzf
        2
    leozzf  
       168 天前 via Android
    现在还在用 XML 真的该淘汰了
    zero47
        3
    zero47  
       168 天前
    国内还是主流吧,都喜欢写 sql
    zero47
        4
    zero47  
       168 天前
    @leozzf 微信 API ,你值得吐槽
    chihiro2014
        5
    chihiro2014  
       168 天前
    国内难道不是 mybatis/mybatis-plus 一把梭么。
    用 JPA/hibernate 的不多。
    其次可能是 JOOQ 这种冷门框架。
    或者也有佬喜欢 JDBC 原生一把梭。
    urnoob
        6
    urnoob  
       168 天前
    xml 中拼 sql 多么简单粗暴.....不是挺好么 现在都用什么?
    mineralsalt
        7
    mineralsalt  
       168 天前
    MyBatis Plus
    leeraya
        8
    leeraya  
       168 天前
    java 业务系统 ORM 基本都是 mybatis ,适合梭哈。
    L0L
        9
    L0L  
    OP
       168 天前
    @leozzf xml 格式上死板;相比与 yml 那种,感觉有时候会好用点(少一个空格很崩溃)
    L0L
        10
    L0L  
    OP
       168 天前
    @ghost024 有个在某里的同学,他们好像也还在用 mybatis ,不知道是不是个例
    kongkongye
        11
    kongkongye  
       168 天前 via iPhone
    @urnoob 前端一堆搜索条件输入框的,mybatis 里方便实现吗?
    L0L
        12
    L0L  
    OP
       168 天前
    @mineralsalt mp 用起来,确实能提升效率
    L0L
        13
    L0L  
    OP
       168 天前
    @chihiro2014 mp 做的确实不错,直接用起来还是很嗨
    Richardhtw
        14
    Richardhtw  
       168 天前
    所以现在主流的在用什么
    muchenlou
        15
    muchenlou  
       168 天前
    op 用的是什么呢?我比较喜欢 mybatis-plus
    cheng6563
        16
    cheng6563  
       168 天前
    @kongkongye 这种乱拼 SQL 的需求还就 Mybatis(-plus)好实现,换其他的硬 ORM 还更麻烦
    L0L
        17
    L0L  
    OP
       168 天前
    @Richardhtw https://rollbar.com/blog/most-popular-java-web-frameworks/ 搜了几个排名基本和这个差不多,hibernate 看起来用的群体很大。
    hui9000
        18
    hui9000  
       168 天前
    @ghost024 大厂都用什么?
    MonkeyJon
        19
    MonkeyJon  
       168 天前
    mybatis+mybatisplus
    yule111222
        20
    yule111222  
       168 天前   ❤️ 2
    不用了,我用 kotlin 和 ktorm
    CloudnuY
        21
    CloudnuY  
       168 天前
    蹲个大厂的方案,刚好近期要重新做一套我司的基础框架
    bugmakerxs
        22
    bugmakerxs  
       168 天前   ❤️ 1
    玩具项目 JPA ,公司项目 mybatis 。简单逻辑 JPA 快一点
    BBCCBB
        23
    BBCCBB  
       168 天前
    不用 mybatis 用什么... mybatis 上面的扩展, mybaits plus 这种, 就很好用..

    其他的 orm 拼 sql 的时候没有这么灵活的..
    BBCCBB
        24
    BBCCBB  
       168 天前
    其他各种 orm 的 dsl 写起来感觉表现力始终不如 sql 简单快捷清晰?
    L0L
        25
    L0L  
    OP
       168 天前
    @muchenlou 第一家公司是魔改的 mybatis ,然后为了和产品一起卖的;现在的公司用的 mybatis+mybatis-plus ,复杂的报表需求,一个语句出来就很爽。
    L0L
        26
    L0L  
    OP
       168 天前
    @CloudnuY v 站应该友不少大厂的朋友吧,一起蹲一蹲
    Morii
        27
    Morii  
       168 天前
    坐标千人小厂

    Java 还是 Mybatis + Mb-plus
    chenPiMeiHaoChi
        28
    chenPiMeiHaoChi  
       168 天前
    在写 webflux ,用 r2dbc 。
    L0L
        29
    L0L  
    OP
       168 天前
    @Morii 头像好评
    wellerman
        30
    wellerman  
       168 天前
    mybatis-plus 啊,基本不用写 sql
    yty2012g
        31
    yty2012g  
       168 天前
    To C 的服务,我们一般使用 JDBCTemplate 。To B 的服务,MyBatis 、Spring Data JPA 都有使用。
    zoharSoul
        32
    zoharSoul  
       168 天前
    国内大厂都在用
    dwlovelife
        33
    dwlovelife  
       168 天前
    坐标狗东 Mybatis+MybatisPlus , 现在最流行的框架就是 Mybatis 了,有什么更牛逼的解决方案?
    wetalk
        34
    wetalk  
       168 天前
    基本上用 Java 这套体系的,都是 MyBatis + plus ,其他的不灵活,或者代价过高
    cweijan
        35
    cweijan  
       168 天前
    @leozzf 在其他 orm 框架的对比下, xml 任然是在 Java 中写 SQL 最高效最便于维护的方式.
    cedoo22
        36
    cedoo22  
       168 天前
    witcherhope
        37
    witcherhope  
       168 天前
    都可以吧,做好防腐隔离,别让 orm 污染业务层就好
    renyijiu
        38
    renyijiu  
       168 天前
    最近几年一直用 jooq ,开发者异常活跃
    L0L
        39
    L0L  
    OP
       168 天前
    @cedoo22 我是搜索的统计的排行榜;国内用 mybatis 的还是很多的; hibernate 的总量是比 mybatis 多的。
    L0L
        40
    L0L  
    OP
       168 天前
    @renyijiu jooq 目前在尝试;所在行业要求大改造,大量的 Oracle 需要转换成 mysql ,在使用 jooq 提供的转换功能。
    EminemW
        41
    EminemW  
       168 天前
    @kongkongye #11 mybatis 可以在 xml 里面写 IF 判断,方便的很
    oneisall8955
        42
    oneisall8955  
       168 天前 via Android
    @kongkongye 成熟的 orm 框架都支持
    luzemin
        43
    luzemin  
       168 天前
    mybatis +1
    beginor
        44
    beginor  
       168 天前 via Android
    最近实现了个类似 mybatis 功能的后台 api 系统,在数据库存储 xml+sql ,用户可以在线上定义参数,配合编写 xml+sql 来定义 api 🤭
    volatileSpark
        45
    volatileSpark  
       168 天前
    Google 趋势的数据值得参考,国内目前肯定是 mybatis/mybatis-plus 居多,国外则是 JPA/hibernate 居多。
    ychost
        46
    ychost  
       168 天前
    @ghost024 大厂也在用 myBatis ,还是很原始的 XML ,mbp 和 JPA 都用的少
    ychost
        47
    ychost  
       168 天前
    主要是 JAVA 不支持 C# 那样的语法树,不然有 LINQ 就美滋滋了,除了 LINQ 其它 ORM 都一个样
    hhjswf
        48
    hhjswf  
       168 天前 via Android
    还有其他更好方案吗。我不喜欢用 querywraper ,稍微复杂点就不够直观
    KevinBlandy
        49
    KevinBlandy  
       168 天前
    spring-data-jpa + queryDsl 或者 Jooq 。这种编程式 SQL 太爽了,比 mybatis 这种手写 SQL 不知道高到哪里去了。

    顺便推荐一波 spring-data 系列的中文文档。 [https://springdoc.cn/]( https://springdoc.cn/)
    k9990009
        50
    k9990009  
       168 天前 via Android
    用 mybatis-plus ,流行的低代码都用这个,很好做前后端的查询封装。刚试用 mybatis-plus-jion 这个联表查询插件
    cedoo22
        51
    cedoo22  
       168 天前
    @k9990009 小系统用连表还行,稍微大点的都没法用连表查
    si
        52
    si  
       168 天前
    在用 mybatis-plus
    silentsky
        53
    silentsky  
       168 天前 via Android
    就一点 mybatis 写的 SQL 方便查找定位 其他框架 出问题了 你都不好找
    potatowish
        54
    potatowish  
       168 天前 via iPhone
    必须是 mybatis plus
    suyabgaran
        55
    suyabgaran  
       168 天前
    国内还是 Mybatis 、Mybatis-plus 多。但是我现在都用 JOOQ ,写起来真的很爽,我是挺不喜欢 Mybatis 这一套的。
    我看好多人推崇 mybatis-plus ,说基本不用写 sql ,但如果是为了不写 sql 才用 mybatis-plus 那为何不直接用 jooq 呢(疑惑)?
    jooq 其实更加容易调试,而且条件判断可以直接用 Java 来搞定,而且不用定义一堆 xxxMapper 和 xml ;
    复杂的查询,用视图或者多次查询+后端处理就好了呀。
    至于更加复杂的查询,其实用 mybatis 也好不到哪里去吧?
    LeegoYih
        56
    LeegoYih  
       168 天前   ❤️ 7
    MyBatis+MyBatis-Plus 组合简直就是屎上加屎 💩²

    QueryDSL+Spring Data JPA 联表查、子查询、手写 SQL 都是基本功能,最喜欢的功能是,只需要在 Repo 接口中定义方法, 启动时会自动生成代理对象,太香辣。

    PVXLL
        57
    PVXLL  
       168 天前 via iPhone
    mybatis 狗都不用
    yuanmomo
        58
    yuanmomo  
       168 天前 via iPhone
    @ghost024 17 年某里的时候,用的 mybatis
    nnegier
        59
    nnegier  
       168 天前 via Android
    之前用 JPA ,现在回到 MyBatis 了
    billccn
        60
    billccn  
       168 天前
    老实说 YAML 根本不应该算 Markup Language ,因为它的语法只在行首,字符串里面是没有标记能力的。
    像 MyBatis 需要的在 SQL 中间动态插入标签的能力 YAML 无法胜任,硬要用的话还得自己造轮子。

    设想这样的 SQL 模板语言要多少行才能写完一个复杂的查询?而且要在从 SQL 工具之间复制已经调好的查询,手工处理量非常大,等于人工做了个 lexer 。

    ```
    - "SELECT"
    - if: ...条件...
    then: COL1
    - "FROM t WHERE rownum <"
    - eval: ...表达式...
    ...
    ```

    XML 就写得很好读:

    ```
    SELECT <if test="条件">COL1</if> FROM t WHERE rownum &lt; #{id}
    ```
    dreamramon
        61
    dreamramon  
       168 天前
    jooq 一直用,mybatis 太慢了。
    vagusss
        62
    vagusss  
       168 天前
    @LeegoYih 写这么一大堆, 真的香么
    LeegoYih
        63
    LeegoYih  
       168 天前 via iPhone
    @vagusss 别张口就来,你用 mybatis 代码量能比这个少?
    leimu012
        64
    leimu012  
       168 天前
    我干过的项目一般都是 mybatis+mybatis-plus
    gowk
        65
    gowk  
       168 天前
    Java 还在玩 MyBatis MyBatis-Plus 这些上古的屎玩意,真让我感到恶心
    宁可用 JPA ,虽然 JPA 用的菜,心智负担重,我怎么就对 Java 这些重框架喜欢不起来呢
    都是 CRUD 写业务的居多,用 .NET 不香吗,C# 语法太他妈爽了好嘛!!

    贴个图 (doge

    https://imgur.com/lYFSbjA
    vagusss
        66
    vagusss  
       168 天前
    @LeegoYih 我的意思是,没看出来和 mybatis 有太大区别啊, 只是由拼 sql 变成了拼接 java 代码
    gowk
        67
    gowk  
       168 天前   ❤️ 3
    hb0730
        68
    hb0730  
       168 天前
    公司要用啥就用啥,自己的想怎么用就怎么用
    Goalonez
        69
    Goalonez  
       168 天前
    用了 mybatis,靠自动生成代码,不太需要写基础 sql 和 if 条件.
    没有用 myabtis-plus,不太喜欢在业务层一堆查询语句
    lazyfighter
        70
    lazyfighter  
       168 天前   ❤️ 1
    多, 国外普遍用 hibernate 、jpa ,但说实话 hibernate 我觉得太厚重了,jpa 还是不错的,不过一直没有在实际的生产项目中使用, 我比较推崇简单,这个简单不是单纯的 coding 量比较少,而是回归事务本身,以极简的架构、抽象方式去实现项目, 类比于 sql 就是要回归于 sql 语句本身,可见的 sql ,同时再将存储层很好的抽象隔离,所以我觉得 mybatis 本身实现的不错,以至于我搭建的项目都还在用 mybatis ,至于 mybatis-plus 我一向不推崇,这个项目在我看来抛弃了 myabtis 的精髓
    tairan2006
        71
    tairan2006  
       168 天前
    idea 装个插件,写 mp 爽的一批,比在代码里拼 SQL 爽多了
    hhjswf
        72
    hhjswf  
       168 天前
    @LeegoYih 如果你这代码每个 value 都做判空的话,代码看的不头大?这种事情丢到 xml 里我觉得比较舒服
    wanguorui123
        73
    wanguorui123  
       168 天前
    mybatis 和 hibernate 都用,我更喜欢 hibernate 根本不需要手动连表查询,而且缓存和更新机制底层做的比较完善,其次是 hibernate 迁移数据库非常方便。
    dif
        74
    dif  
       168 天前
    那肯定在用了,而且在 ORM 中算用的最多的。
    另外,@gowk .NET 语法爽是爽,生态不行,覆盖面太低。mybatis 也不是什么上古屎玩意,能做出业务,能挣到钱,成本低,bug 少,安全漏洞很少听到,这就是优点。
    undefine2020
        75
    undefine2020  
       168 天前
    @gowk 那干嘛不用 php 呢 不更爽。
    Procumbens
        76
    Procumbens  
       168 天前
    在国内的论坛问的话就是大部分都有 MyBatis 。
    就像在国内用的前端框架 Vue 也应该比 React 多
    ysq
        77
    ysq  
       168 天前
    @LeegoYih JPA 注解里写简单语句还行,多行的语句时就很麻烦,无论是粘贴还是复制出来调试都没找方便的方式,最坑的是 在事物里 默认的 SQL 语句竟然不是按代码顺序执行的,排查了好久才找到原因,参考这个 https://blog.csdn.net/weixin_36795183/article/details/100574823
    wolfie
        78
    wolfie  
       168 天前
    @LeegoYih #54
    让别人维护试试。
    LeegoYih
        79
    LeegoYih  
       168 天前
    @wolfie 有什么问题?
    gongquanlin
        80
    gongquanlin  
       168 天前
    laravel 转的 spring ,php 框架里的 orm 都是和建造者模式似的调用,写起来很爽,运维起来苦逼的不行
    senx0000
        81
    senx0000  
       168 天前
    现在在用 mybatis-flex ,结合了 querydsl 和 mybatis
    https://imgur.com/frjRmK7
    senx0000
        82
    senx0000  
       168 天前
    sqmwin
        83
    sqmwin  
       168 天前   ❤️ 4
    为什么都把 sql 语句通过 java 实现觉得很优雅?不应该把 java 和 sql 明确分开吗。一直觉得在 java 里面写 sql 很难维护
    wxlwsy
        84
    wxlwsy  
       168 天前
    我在用 dynamicsql, 比 xml 好些.
    nothingistrue
        85
    nothingistrue  
       168 天前
    @L0L 搜索引擎趋势,没多大意义。google 中文搜索已经废了,它的趋势基本只能反映国外,和国内的“会用 google 或英语的人”的领域。另一方面,不管是 MyBatis 还是 MyBatis Plus ,它的特点就是简单——框架本身和使用框架都简单,这也就注定了它没啥可搜索的,自然也上不了搜索引擎趋势。

    至于框架的选择,搭配上 Spring Data Jpa 之后,Jpa/Hibernate 体系,门槛已经小很多了,现在各项比较都是碾压 Mybatis 系列。只不过国内螺丝大厂已经积重难返了。你必须会一份门槛低的东西,以方便到大厂拧螺丝。但如果你是个人开发,以及真正的技术性小团队开发,那还是 Spring Data Jpa 一步到位。
    tilv37
        86
    tilv37  
       168 天前
    目前人在外企,我们一般都是 JPA ,国外同事一般也是 JPA 。
    不过确实没有遇到一个查询需要写超过 30 行 sql 的,所以 JPA 完全够用了
    nothingistrue
        87
    nothingistrue  
       168 天前
    @lazyfighter #70 这个建议你连 Java 也别用了,直接用 SQL 再套个简单的 Javascript 前端就够了,SQL 本身就能用存储过程做逻辑开发的。
    @ysq #77 JPA 也可以用 XML 写 JPQL ,只不过不是主流,仅有一些特定情况才会需要写多行语句。
    LeegoYih
        88
    LeegoYih  
       168 天前
    @hhjswf #72 QPredicate 封装好了可以自动判空,没有联表的条件会自动去掉 join
    MyBatis XML 判空每个都要写一遍<if test="">,循环要写<foreach item="">,要实现下面的 SQL 至少得写一页 XML
    javlib
        89
    javlib  
       168 天前
    mybatis 的优点是手写 sql 方便,而且提供了一些简单的控制语句,动态 sql 也能搞定。而且在 xml 写的 sql ,已经很接近最终 sql ,找问题的时候也比较方便。

    选择 jooq 或者 hibernate ,主要是想要类型安全。mybatis 只有在运行起来后,才能发现自己的 sql 对不对。不过这个也可以改善,可以写插件在单元测试中导出 sql ,然后用 sqlparser 校验 sql 的正确性。
    lazyfighter
        90
    lazyfighter  
       168 天前
    @nothingistrue 嗯 你说的对~
    hankli
        91
    hankli  
       168 天前
    JPA 和 Mybatis 都用
    配合 Github Copilot 写 Mybatis 也很舒服了现在,所以说 mp 是真的鸡肋!
    witcherhope
        92
    witcherhope  
       168 天前
    @LeegoYih #56 这代码看着也不怎么直观,加上 Java 本身表现力不足,强行上 DSL 只会增加通用理解成本,Mybatis 固然有缺点,但简单无黑魔法让它更容易接受和推广。
    xuanbg
        93
    xuanbg  
       167 天前
    一直用 Mybatis ,但从来都不写 xml 。都是直接 @Select("select xx from xx;")这样的注解
    wqzjk393
        94
    wqzjk393  
       167 天前 via iPhone
    前数据分析师,日常工作就是折腾上万行的 sql 脚本,所以不喜欢在开发中还用 sql 干活,基本上 jpa 一把梭了
    Huelse
        95
    Huelse  
       167 天前
    很多新的设计都趋于使用高阶函数而避免直接写 sql ,如这个 scala 的 quill
    lanlanye
        96
    lanlanye  
       167 天前
    ActiveRecord, SQLAlchemy 使用者前来围观……朋友一直说 Hibernate 过时了,Mybatis 更好,看来并不是这样?
    runliuv
        97
    runliuv  
       167 天前
    C# EF 一把梭。
    xiaocaiji111
        98
    xiaocaiji111  
       167 天前
    谁说 mybatis 就一定要写 xml 。另外 xml 里面语法古板,带来得好处就是看着清晰。很多 sql 静态分析工具在代码上线钱可以扫描 sql 是否存在问题,其他得运行时生成 sql 得 orm 框架,怎么做分析呢。只能全部跑出来在分析吧。
    suyabgaran
        99
    suyabgaran  
       167 天前
    @lanlanye ActiveRecord 好啊,我也想学 Ruby 和 Rails
    wolfie
        100
    wolfie  
       167 天前
    @LeegoYih #54
    1. 你这种方式查询,mybatis-plus 可以实现。
    2. 有点复杂的 xml SQL 随便换个人就可以修改
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3782 人在线   最高记录 6067   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 04:06 · PVG 12:06 · LAX 21:06 · JFK 00:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.