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

时间:2012-04-24 06:52:58

标签: java sql jdbc ibatis mybatis

我需要编写相当直接的DB代码,而我正在考虑MyBatis而不是普通的JDBC(我相信完整的ORM是一种矫枉过正的行为)。

考虑到在MyBatis和普通JDBC中你都找到了自己:

  1. 手写SQL语句。
  2. 手动将DB行连接到JAVA DTO对象(通过代码或配置)。
  3. 我知道的MyBatis优于JDBC的好处是:

    1. 开箱即用的表/查询缓存。
    2. 动态SQL。
    3. SQL存储在代码之外。
    4. 模板化SQL以便更轻松地使用DB供应商。
    5. 还有哪些其他MyBatis-Over-JDBC好处需要考虑?

3 个答案:

答案 0 :(得分:3)

我不知道你会把这个算作优势与否,但有MyBatisGenerator,它还会生成所有基本需要的查询和一些高级查询,并且DTO对象会根据单个XML文件自动生成。

另外它有Eclipse Plugin同样的。

答案 1 :(得分:2)

大多数情况下,您不需要将明确列映射到pojos,因此子弹号2是差异而不是相似性。

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

映射器和注入有助于测试很多,因为映射器是简单的接口,因此很容易模拟。

答案 2 :(得分:2)

关于:'手动将数据库行连接到JAVA DTO对象(通过代码或配置)。' 这并非完全正确,如果您使用约定,您可以获得从DB表到Java类的自动映射,例如,您有一个CUSTOMER表,其中包含ID,COM​​PANY_NAME,PHONE_NUMBER和具有属性id,companyName和属性的Java类Customer字段。 phoneNumber,MyBatis足够智能,可以将数据库设计为驼峰大小写,并且不需要您进行映射。大!

  • MyBatis需要的代码更少,而且比纯JDBC编码更清晰
  • MyBatis支持命名参数,JDBC仅支持占位符? (UGG!)
  • 只需一行,您就可以从重用准备语句模式更改为浴模式,在普通JDBC中,它将重写您的代码。