想不出一个好的标题。
我正在创建一个库/工具包,用于在数据库中存储和搜索特殊类型的数据(与问题无关,但它是化学结构)。搜索函数返回一个化合物列表,其中一个化合物由一个或多个化学物质组成。
使用该工具包的开发人员可以使用它来创建多个存储化合物的应用程序。这个想法是所有应用程序应该只有一个存储。例如,假设他创建了一个库存系统,其中每个容器都包含一个化合物。他还创建了一个用于存储生物测试结果的应用程序。我们现在有两个类(Container,BiologicalTestResult),它们包含一个化合物,但是API不知道。我想要的是,当存储化合物时,API应该能够存储它出现在哪些应用程序中。因此,当在应用程序A中搜索时,只返回应用程序A中实际存在的化合物。
此外,在搜索时,API应该能够过滤特定于该应用程序的数据,例如:testResult = "Failed“或remainingAmount > 100。
什么是实现这一目标的好方法?我认为最简单的解决方案是通过字符串连接来构建SQL语句(有相关的缺点)。这将消除工具包存储它所属的应用程序的需要。示例:
search(String searchTerm, String selectFields, String joinTable, Filter filter);其中"selectFields“是从"joinTable”返回的字段,"joinTable“是包含复合表的外键的applications表,filter是包含"where子句”的自定义类,例如将字段名映射到条件(>,<,like,= ...)和一个值。
这是否合理呢?更好的点子?
发布于 2013-03-15 00:32:19
答案是有一个合适的域模型,然后你就可以使用QueryDSL了。
https://stackoverflow.com/questions/12670571
复制相似问题