有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java根据搜索过滤器参数创建动态sql查询

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

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

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

伪代码:

  1. 如果是固定值
WHERE <table>.height = searchFilter.getHeight, 
  1. 以防射程
WHERE <table>.height BETWEEN searchFilter.getMinHeight AND searchFilter.getMaxHeight

我使用的是spring的jdbcTemplate

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


共 (2) 个答案

  1. # 1 楼答案

    只需使用minHeightmaxHeight并使用:

    WHERE <table>.height BETWEEN searchFilter.getMinHeight AND searchFilter.getMaxHeight
    

    如果需要height的单个值,请将最小值和最大值设置为相同的值

  2. # 2 楼答案

    WHERE <table>.height = searchFilter.getHeight
    

    相当于

    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)
    

    我认为sql可以成功执行,但这不是最佳实践,因为在查询中会有隐式逻辑。对于更多动态查询,考虑使用JPA/Hibernate实现标准查询。p>