Java 与普通JDBC相比,MyBatis提供了哪些好处

Java 与普通JDBC相比,MyBatis提供了哪些好处,java,sql,jdbc,ibatis,mybatis,Java,Sql,Jdbc,Ibatis,Mybatis,我需要编写非常直接的DB代码,我正在考虑MyBatis而不是普通的JDBC(我认为完整的ORM是一种过分的技巧) 考虑到在MyBatis和普通JDBC中,您会发现自己: 手工编写SQL语句 手动将DB行连接到JAVA DTO对象(通过代码或配置) 据我所知,MyBatis相对于JDBC的优势是: 现成的表/查询缓存 动态SQL SQL存储在代码之外 模板化SQL以简化数据库供应商独立性 强>其他JDBC好处的MybATIs需要考虑什么?< /强> < P>我不知道你会把这个看作是优势还是不存在

我需要编写非常直接的DB代码,我正在考虑MyBatis而不是普通的JDBC(我认为完整的ORM是一种过分的技巧)

考虑到在MyBatis和普通JDBC中,您会发现自己:

  • 手工编写SQL语句
  • 手动将DB行连接到JAVA DTO对象(通过代码或配置)
  • 据我所知,MyBatis相对于JDBC的优势是:

  • 现成的表/查询缓存
  • 动态SQL
  • SQL存储在代码之外
  • 模板化SQL以简化数据库供应商独立性
    <>强>其他JDBC好处的MybATIs需要考虑什么?< /强>

    < P>我不知道你会把这个看作是优势还是不存在,但是它生成了所有基本需要的查询加上一些高级查询和基于单个XML文件的DTO对象自动。


    另外,它也有相同的功能。

    大多数情况下,您不需要将显式列映射到POJO,因此项目符号2是一个差异,而不是一个相似性

    IMHO的主要区别在于MyBatis中的API比JDBC中的API简单得多。如果与Spring或Guice一起使用,则根本不需要在代码中调用MyBatis API


    映射器和注入对测试有很大帮助,因为映射器是易于模拟的普通接口。

    关于:“手动将DB行连接到JAVA DTO对象(通过代码或配置)。” 这并不是完全正确的,如果使用约定,您可以获得从DB表到Java类的自动映射,例如,您有一个CUSTOMER表,其中包含ID、COMPANY\u NAME、PHONE\u NUMBER等字段,以及一个Java类CUSTOMER,其属性为ID、companyName和phoneNumber,MyBatis足够聪明,可以计算DB到camel案例的约定,不需要您进行映射。太好了

    • MyBatis需要更少的代码,并且比普通的JDBC编码更干净
    • MyBatis支持命名参数,JDBC只支持占位符?(ugg!)
    • 只需一行代码,您就可以从重用准备语句模式更改为Bath模式,在普通的JDBC中,您需要重写代码

    +1。代码生成当然是一个好处。您甚至可以根据您的DB模式扩展Eclipse生成器插件来构建其他东西。例如,我们使用它生成带有注释的枚举域对象。