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

基于 mybatis-plus 的联表查询工具,可以实现大部分的写 SQL 需求

  •  
  •   MrGoooo · 2021-09-24 13:17:21 +08:00 · 2621 次点击
    这是一个创建于 916 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2021-09-24 15:25:49 +08:00
    不知道大家有没有遇到过拼接 SQL 时容易字段名写错的情况,mybatis-plus 用 lamda 表达式可以避免这种错误,不需要在写字段名了,错误出现的情况也少了。
    25 条回复    2022-05-15 14:48:39 +08:00
    fkdog
        1
    fkdog  
       2021-09-24 15:40:24 +08:00
    就真的套娃了,
    jdbc 套 mybatis,
    mybatis 套 mybatis-plus,
    mybatis-plus 又套 mybatis-plus-join...

    在框架上二次封装还不如自己重新弄一个.
    fkdog
        2
    fkdog  
       2021-09-24 15:45:19 +08:00   ❤️ 3
    另外补充一下,
    之所以市面上的框架没有复杂查询 api 是因为大家发现试图用 java 来实现 sql 的 dsl 效果往往不尽人意, 要么就是 api 过于臃肿要么就是缺乏灵活性,弄到最后还不如直接传一条 sql 进去简单明了...
    huifer
        3
    huifer  
       2021-09-24 15:51:53 +08:00
    sql 很难?要这么用不如 hibernate 吧
    sonyxperia
        4
    sonyxperia  
       2021-09-24 16:04:26 +08:00
    没必要,真的没必要
    MrGoooo
        5
    MrGoooo  
    OP
       2021-09-24 16:14:11 +08:00
    @fkdog 我的本意只是减少书写 sql 时容易导致字段错误,以及避免维护 xml 文件
    @huifer 不难,但是烦
    @sonyxperia 各去所需吧
    MrGoooo
        6
    MrGoooo  
    OP
       2021-09-24 16:17:19 +08:00
    @fkdog xml 形式的 sql 不比代码写出来的简单明了
    fkdog
        7
    fkdog  
       2021-09-24 16:46:24 +08:00
    @MrGoooo
    的确 xml 对于动态条件判断的 sql 来说也不是简单明了.
    但是不是所有框架的设计都以简单明了为目的.
    levon
        8
    levon  
       2021-09-24 16:49:21 +08:00
    非常不错
    qwer666df
        9
    qwer666df  
       2021-09-24 16:50:51 +08:00
    我选择手写 sql
    lidashuang
        10
    lidashuang  
       2021-09-24 16:51:21 +08:00
    @MrGoooo xml 垃圾,都什么年代了
    MrGoooo
        11
    MrGoooo  
    OP
       2021-09-24 16:52:15 +08:00
    @lidashuang 大哥用的啥?
    wolfie
        12
    wolfie  
       2021-09-24 16:58:33 +08:00
    @lidashuang #10
    那你倒是说一个能替代 xml 的?
    MrGoooo
        13
    MrGoooo  
    OP
       2021-09-24 17:00:20 +08:00
    @qwer666df 确实,一般公司都是最多选择到 mybatis,选择 mybatis-plus 的都很少了,更别说我这小小的 demo 级项目了,不过在小公司或者自己偷懒用用也还行,最好还是写 sql.
    fkdog
        14
    fkdog  
       2021-09-24 17:06:15 +08:00
    @wolfie mybatis 的 XML 本质是 XMLLanguageDriver. mybatis 和他的 xml 文件映射在接口上做了解耦, 通过 mybatis LanguageDriver 你可以自行扩展, 配合 springEL 表达式完全可以简化掉 mybatis 的 xml <if test="xxx!=null">这样的判断.

    至于为什么没什么人去扩展这个,存粹是因为即使扩展了也没什么更明显的优势, 使用 springEL 或者自定义 dsl 结构省不了多少代码, 查询条件复杂了反而还没有<if test="xxx!=null">看着舒服.
    MrGoooo
        15
    MrGoooo  
    OP
       2021-09-24 17:30:43 +08:00
    @fkdog 学习了,刚看了一下 LanguageDriver,感觉好像意义不大,有 xml 就够了
    echo1937
        16
    echo1937  
       2021-09-24 17:41:30 +08:00
    @MrGoooo #6 Java 社区去 XML 已经基本完成了,也就只有类似 mybatis 还是重依赖 XML
    Leviathann
        17
    Leviathann  
       2021-09-24 17:47:25 +08:00 via iPhone
    别的无所谓,xml 必须死。
    K1W1
        18
    K1W1  
       2021-09-24 18:08:39 +08:00 via Android
    不错,楼主加油
    Kaiv2
        19
    Kaiv2  
       2021-09-24 18:09:55 +08:00
    select count(1);

    类似这种查询支持吗?
    MrGoooo
        20
    MrGoooo  
    OP
       2021-09-24 18:10:47 +08:00   ❤️ 1
    @echo1937 #16 啥社区
    MrGoooo
        21
    MrGoooo  
    OP
       2021-09-24 18:14:04 +08:00
    @Kaiv2 #19 可以支持,不就是 select count(1) from dual 吗?创建一个实体类叫 Dual,然后 @TableName("dual")就行了
    jorneyr
        22
    jorneyr  
       2021-09-24 18:20:42 +08:00
    我继续写 SQL,您随意
    FreeEx
        23
    FreeEx  
       2021-09-24 18:24:01 +08:00
    @wolfie java 17 来了,多行字符串功能利好 jdbc template,直接手写 sql 了
    QGLNepal
        24
    QGLNepal  
       2021-09-27 11:36:10 +08:00
    jOOQ 了解下
    skyworker
        25
    skyworker  
       2022-05-15 14:48:39 +08:00
    一直用 laravel 的 ORM, 最近被迫要用 java 这些"看起来很好用的 XXX", 简直恶心吐了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3381 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:19 · PVG 19:19 · LAX 04:19 · JFK 07:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.