java根据搜索过滤器参数创建动态sql查询
我正在我的web应用程序中创建搜索过滤器,并希望根据参数创建动态sql查询
我假设参数可以有固定值(高度=100)或在范围内(最小高度=100,最大高度=200)
问题: 进行动态sql查询的好方法是什么?我想要动态WHERE子句
伪代码:
- 如果是固定值
WHERE <table>.height = searchFilter.getHeight,
- 以防射程
WHERE <table>.height BETWEEN searchFilter.getMinHeight AND searchFilter.getMaxHeight
我使用的是spring的jdbcTemplate
[编辑] 如果参数是可选的,例如设置了高度,但未设置宽度(那么在WHERE子句中应省略宽度),该怎么办?主要的问题是如何动态地进行查询,而不是如何进行这个特定的用例
# 1 楼答案
只需使用
minHeight
和maxHeight
并使用:如果需要
height
的单个值,请将最小值和最大值设置为相同的值# 2 楼答案
相当于
查询也是如此
,只需提供高度或范围,取决于你得到的
如果参数可以是可选的,只需在主条件之前进行检查:
或者
我认为sql可以成功执行,但这不是最佳实践,因为在查询中会有隐式逻辑。对于更多动态查询,考虑使用JPA/Hibernate实现标准查询。p>