当表有八列时搜索数据库条目以查找匹配项
Posted
技术标签:
【中文标题】当表有八列时搜索数据库条目以查找匹配项【英文标题】: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 语句。只要确保你有所有的索引 【参考方案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
/* .... */
【讨论】:
以上是关于当表有八列时搜索数据库条目以查找匹配项的主要内容,如果未能解决你的问题,请参考以下文章