【问题标题】:Search DB entries for a match when table has eight columns当表有八列时搜索数据库条目以查找匹配项
【发布时间】:2015-05-11 06:32:33
【问题描述】:

我必须使用 8 个字段的 POJO“订单”,每个字段都是“订单”表中的一列。 DB 模式是非规范化的(更糟糕的是,被认为是最终的和不可更改的)所以现在我必须编写一个搜索模块,它可以使用上述 8 个字段的任意组合执行搜索。

有什么方法可以做到这一点吗?现在,我在一个新的 POJO 中获取输入,并通过 8 个 IF 语句查找非 NULL 值。每次找到这样的值时,我都会将其添加到 SELECT 语句中的 WHERE 条件中。

这是我所希望的最好的吗?可以说选择一些最低标准更好,然后在内存中迭代接收到的集合,只保留与其余标准匹配的条目吗?如果有用的话,我可以提供伪代码。使用 Java 1.7、JSF 2.2 和 MySQL。

【问题讨论】:

  • 我会删除 java 和 jsf 标签并添加 jpa 或 jdbc。但是关于这个问题:只需使用八个 if 语句。只要确保你有所有的索引

标签: java mysql jpa jdbc


【解决方案1】:

每次我找到这样一个值时,我都会将它添加到我的 SELECT 语句中的 WHERE 条件中。

这是 Sql 注入攻击的主要目标!

MySql 可以使用类似下面的内容吗?

SELECT *
FROM SomeTable
WHERE (@param1 IS NULL OR SomeTable.SomeColumn1 = @param1) OR
    (@param2 IS NULL OR SomeTable.SomeColumn2 = @param2) OR
    (@param3 IS NULL OR SomeTable.SomeColumn3 = @param3) OR
    /* .... */

【讨论】:

    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多