问题

Java 程序员面对的最痛苦的事情之一就是在 Java 代码中嵌入 SQL 语句。这通常是因为需要动态生成 SQL 语句,不然我们可以将它们放到外部文件或者存储过程中。如你所见,MyBatis 在 XML 映射中具备强大的 SQL 动态生成能力。但有时,我们还是需要在 Java 代码里构建 SQL 语句。此时,MyBatis 有另外一个特性可以帮到你,让你从处理典型问题中解放出来,比如加号、引号、换行、格式化问题、嵌入条件的逗号管理及 AND 连接。确实,在 Java 代码中动态生成 SQL 代码真的就是一场噩梦。例如:

  1. String sql = "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, "
  2. "P.LAST_NAME,P.CREATED_ON, P.UPDATED_ON " +
  3. "FROM PERSON P, ACCOUNT A " +
  4. "INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID " +
  5. "INNER JOIN COMPANY C on D.COMPANY_ID = C.ID " +
  6. "WHERE (P.ID = A.ID AND P.FIRST_NAME like ?) " +
  7. "OR (P.LAST_NAME like ?) " +
  8. "GROUP BY P.ID " +
  9. "HAVING (P.LAST_NAME like ?) " +
  10. "OR (P.FIRST_NAME like ?) " +
  11. "ORDER BY P.ID, P.FULL_NAME";