7

我需要编写非常直接的数据库代码,并且我正在考虑 MyBatis 而不是普通的 JDBC(我相信完整的 ORM 是一种矫枉过正)。

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

  1. 手写 SQL 语句。
  2. 手动将 DB 行连接到 JAVA DTO 对象(通过代码或配置)。

我所知道的 MyBatis 对 JDBC 的好处是:

  1. 开箱即用的表/查询缓存。
  2. 动态 SQL。
  3. SQL 存储在代码之外。
  4. 模板化 SQL 以更轻松地实现数据库供应商的独立性。

MyBatis-Over-JDBC 还有哪些其他好处需要考虑?

4

3 回答 3

3

我不知道你是否会将此视为优势,但有MyBatisGenerator,它也生成所有基本需要的查询以及一些高级查询和基于单个 XML 文件的 DTO 对象。

另外,它具有相同的Eclipse 插件

于 2012-06-09T08:58:58.470 回答
2

大多数情况下,您不需要将明确的列映射到 pojo,因此第 2 个项目符号是不同的,而不是相似的。

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

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

于 2012-06-23T15:19:12.627 回答
2

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

  • MyBatis 需要更少的代码,并且比普通的 JDBC 编码更干净
  • MyBatis 支持命名参数,JDBC 只支持占位符?(呜!)
  • 只需一行,您就可以从 Reuse Prepared Statement Mode 更改为 Bath Mode,在普通的 JDBC 中,它将带您重写您的代码。
于 2014-05-26T02:28:55.600 回答