V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
waymedev
1.05D
V2EX  ›  Java

现在 Mybatis 是更多使用注解还是 XML 进行配置?

  •  1
     
  •   waymedev · Mar 14, 2019 · 13229 views
    This topic created in 2606 days ago, the information mentioned may be changed or developed.

    本人在校生,不知道企业级开发是使用的哪种方式进行配置。

    看过 刘增辉 的书,他推荐的更多是使用 XML 的方式,利于修改和扩展。

    但是我在之前也给学校写过几个大型的项目,类似于预约或者信息录入系统。使用的都是注解的形式,这样看起来整个项目非常清爽。

    各位有丰富实战经验的大佬帮忙解答解答呗,小生在此谢过。

    49 replies    2019-05-10 01:30:24 +08:00
    zhazi
        1
    zhazi  
       Mar 14, 2019 via Android
    xml 是 mybatis 的优势 如果用 mybatis 不用 xml 无疑是自费武功,注解方式有更好的选择
    BCy66drFCvk1Ou87
        2
    BCy66drFCvk1Ou87  
       Mar 14, 2019
    注解比 XML 先进
    luoyikang52066
        3
    luoyikang52066  
       Mar 14, 2019 via Android
    结合吧,不复杂注解,复杂 xml
    micean
        4
    micean  
       Mar 14, 2019   ❤️ 1
    kotlin+注解

    xml 有个 p 的优势
    NoKey
        5
    NoKey  
       Mar 14, 2019
    其实我觉得是看习惯,我习惯了 xml,就不想写注解,然而有的人习惯注解,就不想写 xml
    这东西,我实在找不出先进不先进的差距
    难道执行效率上有差异?
    AnnieSWonderland
        6
    AnnieSWonderland  
       Mar 14, 2019
    xml 更繁琐,复杂的语句用注解简直是灾难
    RRL
        7
    RRL  
       Mar 14, 2019 via Android   ❤️ 3
    这还用选吗,当然是 JPA 啊
    pelloz
        8
    pelloz  
       Mar 14, 2019
    简单的增删改查用 Mapper[https://github.com/abel533/Mapper/wiki]自动化生成,复杂的使用 XML 进行编写。
    XML 有两个功能我们使用比较多。
    1.引用 SQL 片段。
    2.自定义标签语义,实现一些高级功能。
    另外 Java 注解写 SQL 是用字符串拼起来的,不好看也不好修改,我们现在使用的 java8 还不支持 ` ` 反单引号的多行字符串。
    Remote
        9
    Remote  
       Mar 14, 2019   ❤️ 1
    我以前也是用xml,然后注解,再后来JPA
    anzu
        10
    anzu  
       Mar 14, 2019
    复杂查询 XML,可以在 SQL 编辑器格式化好代码后直接粘贴过来,更易读,方便大家。如果是简单查询,用 JPA 更方便。所以我觉得 mybatis 注解基本没什么优势。
    guoyuchuan
        11
    guoyuchuan  
       Mar 14, 2019
    这个看情况,如果全是单表查询,那就使用注解(一般都是些 mybatis 的插件),不用 xml,如果涉及到多表查询,还是得用 xml,而 xml 自己手写配置比较累,可以用逆向工程来构建,然后自己再向 xml 中写自己的 SQL ;
    wucao219101
        12
    wucao219101  
       Mar 14, 2019
    MyBatis Generator
    badbye
        13
    badbye  
       Mar 14, 2019
    我习惯在 xml 中配置,不把配置打到包里面,这样改 sql 就不需要重新打包部署了
    chendy
        14
    chendy  
       Mar 14, 2019
    一楼说 xml 是 mybaits 的优势…啥优势啊
    TommyLemon
        15
    TommyLemon  
       Mar 14, 2019
    有意思,之前有类似的问题,可以看下或许有收获
    现在用 mybatis 都不用 xml 了吗
    https://study.congcong.us/t/541755
    br0x
        16
    br0x  
       Mar 14, 2019 via Android
    复杂 sql 使用 xml 还是有优势的,尤其遗留业务系统,因为 sql 过长过复杂,使用注解并不够清晰,也可以把 xml 中的 sql copy 到数据库查询工具中一边查询,这样方便理解业务和 debug.遗留系统一般业务较重而且基本是面向数据库编程为指导思想来设计的,所以 mybatis 适合这类系统。
    ghos
        17
    ghos  
       Mar 14, 2019
    你想象一下 上百行 sql 写在注解里面是一种什么样的体验
    coang
        18
    coang  
       Mar 14, 2019
    用通用 mapper 实现基础得增删改查 复杂得直接 xml
    waymedev
        19
    waymedev  
    OP
       Mar 14, 2019 via Android
    @ghos 的确,看来还是我遇到的问题偏简单了
    waymedev
        20
    waymedev  
    OP
       Mar 14, 2019 via Android
    @pelloz @coang 这种方式不错,感谢
    waymedev
        21
    waymedev  
    OP
       Mar 14, 2019 via Android
    @blackboom Spring Data JPA 听到很多次推荐了,学习一波
    Amit
        22
    Amit  
       Mar 14, 2019
    复杂查询用注解的你们开心就好。如果业务简单就用 JPA 了也不会用 mybatis 注解。用 xml 并不丑,java 里写 sql 才是真的丑。
    ahmcsxcc
        23
    ahmcsxcc  
       Mar 14, 2019
    这种怎么用注解啊
    BBCCBB
        24
    BBCCBB  
       Mar 14, 2019
    当然是配合使用,那种容易理解的一行就能搞定的就注解,复杂点的就 xml
    gejun123456
        25
    gejun123456  
       Mar 14, 2019
    @ahmcsxcc #23 这个复杂的 sql 你咋写的.. 配置下 IDEA 的数据库就可以做自动补全了 https://www.jianshu.com/p/d997d278813c

    如何提升 mybatis 开发的效率,可以试试 https://github.com/gejun123456/MyBatisCodeHelper-Pro IDEA 插件
    Raymon111111
        26
    Raymon111111  
       Mar 14, 2019
    这都说的是啥

    正确答案是, 看团队习惯, 定下来了之后大家统一用一种.
    ahmcsxcc
        27
    ahmcsxcc  
       Mar 14, 2019
    @gejun123456 #25
    专门的 DBA 写的
    micean
        28
    micean  
       Mar 14, 2019
    interface OneMapper: AnyMybatisPluginMapper<Entity> {

    @Select("""
    1. Idea inject language -> xxxSQL
    2. 配置数据库,用于 auto complete
    3. 开始写复杂 sql
    """)
    fun querySomething(): List<Entity>

    }


    等 jdk13 出来了,多行字符串都有了,xml 这种早该丢了
    lyog
        29
    lyog  
       Mar 14, 2019 via iPhone
    去年底的一个小项目尝试了下注解,难用到爆,回头再用 XML,真香
    serical
        30
    serical  
       Mar 14, 2019 via Android
    自动生成的不动,自己增加的用注解,省的数据库增加字段重新生成需要整理 xml
    Shynoob
        31
    Shynoob  
       Mar 14, 2019
    当然是根据业务来啊,那些报表类的 你用注解不是给自己找刺激吗?
    serical
        32
    serical  
       Mar 14, 2019 via Android
    @ahmcsxcc SelectProvider
    yiyi11
        33
    yiyi11  
       Mar 14, 2019 via Android
    经常跳槽用注解,否则用 xml。
    Macolor21
        34
    Macolor21  
       Mar 14, 2019
    @ghos
    SelectProvider 了解一下?利用反射还可以生成基本的 SQL 语句
    gejun123456
        35
    gejun123456  
       Mar 14, 2019
    @Macolor21 sql 没自动提示,用起来没有 xml 方便
    NoKey
        36
    NoKey  
       Mar 14, 2019   ❤️ 1
    @micean 我们这里还大量使用 jdk7,少部分用 8,我感觉就算 jdk 升级到 20,我们这里依然是 7。。。有多少公司是追着 jdk 新版在用的?
    imNull
        37
    imNull  
       Mar 14, 2019 via Android
    这个看团队吧 ,目前在用 xml
    glaucus
        38
    glaucus  
       Mar 14, 2019
    出于对 xml 的厌恶和偏见,一般用注解+Provider 的形式
    micean
        39
    micean  
       Mar 14, 2019
    @NoKey
    kotlin-stdlib 支持 6 以上
    j 调用 k 即可
    woscaizi
        40
    woscaizi  
       Mar 14, 2019 via iPhone
    Mybatis-plus 这个 mybatis 增强框架不错。
    简单的 sql 我用注解。
    涉及多表或者复杂条件的用 xml。
    不过大部分 mybatis-plus 的 QueryWrapper 都可以搞定。
    nita22
        41
    nita22  
       Mar 14, 2019
    简单的查询就直接用 Mybatis-Generator 生成的 Mapper 搞定,复杂的 SQL 语句都是用 xml
    lurenw
        42
    lurenw  
       Mar 14, 2019
    把 sql 这种声明式语言糅杂到代码里让人无法忍受,即便是使用 chain call,也觉得是在破坏代码的简洁美感。
    kiddult
        43
    kiddult  
       Mar 14, 2019   ❤️ 1
    @ahmcsxcc 写这种 SQL 的人先拖出去抽一顿,想不开么?
    anyele
        44
    anyele  
       Mar 14, 2019 via Android
    肯定是注解
    anyele
        45
    anyele  
       Mar 14, 2019 via Android
    @ahmcsxcc 为什么不拆分
    anyele
        46
    anyele  
       Mar 14, 2019 via Android
    @ahmcsxcc 不觉得这样写就不对吗
    JohnZorn
        47
    JohnZorn  
       Mar 14, 2019 via Android
    需要复杂 sql 和 resultmap 我选择 xml,简单 sql 返回 pojo 直接注解,mapper 中的每个接口方法打好注释
    CFO
        48
    CFO  
       Mar 15, 2019 via Android
    xml 有什么优势? xml 能干的注解基本都可以 再不济二者也可混用
    autogen
        49
    autogen  
       May 10, 2019
    spring 的趋势就是 xml 换成注释
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2197 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 114ms · UTC 00:24 · PVG 08:24 · LAX 17:24 · JFK 20:24
    ♥ Do have faith in what you're doing.