使用 mybatis 的 SQL 构造器 手动构造 SQL,参数替换有什么好方法做吗?

2020-05-04 15:07:53 +08:00
 mikicomo

https://mybatis.org/mybatis-3/zh/statement-builders.html#

// 动态条件(注意参数需要使用 final 修饰,以便匿名内部类对它们进行访问)
public String selectPersonLike(final String id, final String firstName, final String lastName) {
  return new SQL() {{
    SELECT("P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME");
    FROM("PERSON P");
    if (id != null) {
      WHERE("P.ID like #{id}");
    }
    if (firstName != null) {
      WHERE("P.FIRST_NAME like #{firstName}");
    }
    if (lastName != null) {
      WHERE("P.LAST_NAME like #{lastName}");
    }
    ORDER_BY("P.LAST_NAME");
  }}.toString();
}

我希望通过这种方式,构造出 sql,传递给另一个服务,他会把我的 sql 当做子查询条件进行查询

但是这样的话,当遇到参数是日期类型时,有什么好的办法吗?只能手动把日期格式化为 String 类型进行拼接吗?

他 demo 中给出的#{firstName}这样的只是个占位符,并不能直接获取入参进行注入

730 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/668445

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX