Java 根据搜索筛选器参数创建动态sql查询

Java 根据搜索筛选器参数创建动态sql查询,java,sql,spring,Java,Sql,Spring,我正在web应用程序中创建搜索过滤器,并希望根据参数创建动态sql查询 我假设参数可以有固定值(高度=100)或在范围内(最小高度=100&最大高度=200) 问题: 进行动态sql查询的好方法是什么?我想要动态WHERE子句 伪代码: 如果是固定值 WHERE.height=searchFilter.getHeight, 在射程的情况下 searchFilter.getMinHeight和searchFilter.getMaxHeight之间的WHERE.height 我使用的是sprin

我正在web应用程序中创建搜索过滤器,并希望根据参数创建动态sql查询

我假设参数可以有固定值(高度=100)或在范围内(最小高度=100&最大高度=200)

问题: 进行动态sql查询的好方法是什么?我想要动态WHERE子句

伪代码:

  • 如果是固定值
  • WHERE.height=searchFilter.getHeight,
    
  • 在射程的情况下
  • searchFilter.getMinHeight和searchFilter.getMaxHeight之间的WHERE.height 我使用的是spring的jdbcTemplate

    [编辑] 如果参数是可选的,例如设置了高度,但未设置宽度(那么在WHERE子句中应省略宽度),该怎么办?主要的问题是如何动态地执行查询,而不是如何执行这个特定的用例

    WHERE <table>.height = searchFilter.getHeight
    

    其中(?不为空且?>=高度)和(?不为空且?
    或


    其中(?不为空且?>=高度)和(?不为空且?只需使用
    minHeight
    maxHeight
    并使用:

    WHERE <table>.height BETWEEN searchFilter.getMinHeight AND searchFilter.getMaxHeight
    
    searchFilter.getMinHeight和searchFilter.getMaxHeight之间的WHERE.height

    当您需要一个单独的高度值时,请将最小值和最大值设置为相同的值。

    只需使用
    minHeight
    maxHeight
    并使用:

    WHERE <table>.height BETWEEN searchFilter.getMinHeight AND searchFilter.getMaxHeight
    
    searchFilter.getMinHeight和searchFilter.getMaxHeight之间的WHERE.height

    当你想要一个单独的高度值时,将最小值和最大值设置为相同的值。

    是的,也考虑一下,但是如果一些参数是可选的,怎么办?请看我的编辑。是的,也考虑一下,但是如果一些参数是可选的,怎么办?请看我的编辑。是的,也考虑一下,但是如果一些参数是可选的,怎么办选择。请查看我的编辑。是的,也请考虑一下,但如果某些参数是可选的,该怎么办。请查看我的编辑。为什么不设置高度和宽度的默认值,然后在提供值的情况下更改它们。为什么不设置高度和宽度的默认值,然后在提供值的情况下更改它们。
    WHERE <table>.height between searchFilter.getHeight and searchFilter.getHeight
    
    WHERE <table>.height between ? and ?
    
    where ? is not null and ? is not null and height between ? and ?
    
    where (? is not null and ? >= height) and (? is not null and ?<= height)
    
    WHERE <table>.height BETWEEN searchFilter.getMinHeight AND searchFilter.getMaxHeight