L0L
V2EX  ›  Java

MyBatis 框架大家在使用的吗?

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

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

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

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

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

    PVXLL
    PVXLL
    Apr 13, 2023 via iPhone
    57
    mybatis 狗都不用
    66Zi2nJk5Z6mdtzj
    66Zi2nJk5Z6mdtzj
    Apr 13, 2023 via iPhone
    58
    @ghost024 17 年某里的时候,用的 mybatis
    nnegier
    nnegier
    Apr 13, 2023 via Android
    59
    之前用 JPA ,现在回到 MyBatis 了
    billccn
    billccn
    Apr 13, 2023
    60
    老实说 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
    dreamramon
    Apr 13, 2023
    61
    jooq 一直用,mybatis 太慢了。
    vagusss
    vagusss
    Apr 13, 2023
    62
    @LeegoYih 写这么一大堆, 真的香么
    LeegoYih
    LeegoYih
    Apr 13, 2023 via iPhone
    63
    @vagusss 别张口就来,你用 mybatis 代码量能比这个少?
    leimu012
    leimu012
    Apr 13, 2023
    64
    我干过的项目一般都是 mybatis+mybatis-plus
    gowk
    gowk
    Apr 13, 2023
    65
    Java 还在玩 MyBatis MyBatis-Plus 这些上古的屎玩意,真让我感到恶心
    宁可用 JPA ,虽然 JPA 用的菜,心智负担重,我怎么就对 Java 这些重框架喜欢不起来呢
    都是 CRUD 写业务的居多,用 .NET 不香吗,C# 语法太他妈爽了好嘛!!

    贴个图 (doge

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

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

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