【发布时间】:2020-02-28 15:25:32
【问题描述】:
问题:
我有一个处理多个查询参数的 api 端点。使用Spring实现,查询参数用于从postgres数据库中查询数据,我使用JDBC Template查询。
我正在寻找一种成熟的查询生成器技术来解决我的问题。
示例:
一个简单的查询可能看起来像这样:
api/book?name=LOTR&cover=hardback
将查询参数添加到地图中,并根据地图数据构建查询字符串:
String sqlQuery += (String) map.entrySet().stream()
.map(entry -> entry.getKey() + "='" + entry.getValue() + "' AND ")
.collect(Collectors.joining());
这不是最有效的,因为我必须始终从字符串中删除结尾的 "AND" 子句,但它确实有效。
但是,如果查询在哪里看起来像
api/book?name=LOTR&name=Ulysses&cover=hardback
现在添加了"OR" 子句,上面的代码无法处理。我可以看到自己很快就进入了使用繁琐的字符串解析来创建 SQL 语句的领域。
既然我已经提出了我的问题,我想知道是否有一种技术可以很好地处理这种问题?
我想避免在这个项目中使用任何 ORM,所以 Hibernate 和 MyBatis 是不可能的。我查看了一些 JOOQ 示例,但它们看起来与 JDBC 模板不兼容。
【问题讨论】:
标签: sql spring postgresql http query-parameters