如何在java jdbc应用程序的属性文件中编写复杂的sql查询

如何在java jdbc应用程序的属性文件中编写复杂的sql查询,java,sql,jdbc,Java,Sql,Jdbc,我的要求是将sql查询置于java代码的外部,以便手动测试人员可以对其进行修改。我需要一些建议/帮助来为我的实用程序类编写属性文件。我知道如何使用/加载属性文件。但是我需要一些关于我的jdbc类可以使用的复杂sql查询的想法,当将来修改查询时,它应该对我的java代码影响较小/没有影响 在我的类路径中的属性文件中 query1=select org_id from organization where PRIMARY-KEY=454545452 query2=select * from orga

我的要求是将sql查询置于java代码的外部,以便手动测试人员可以对其进行修改。我需要一些建议/帮助来为我的实用程序类编写属性文件。我知道如何使用/加载属性文件。但是我需要一些关于我的jdbc类可以使用的复杂sql查询的想法,当将来修改查询时,它应该对我的java代码影响较小/没有影响

在我的类路径中的属性文件中

query1=select org_id from organization where PRIMARY-KEY=454545452
query2=select * from organization_address where org_id in
在我的java类中

String query1 = Queries.getQuery("query1");
String query2 = Queries.getQuery("query2");
String finalQuery = query2+"("+query1+")";

我需要在属性文件或java类中具有更大的灵活性。

可以这样进行:

这可能是基于主键的通用select查询

query1=select {0} from {1} where {2} = {3}
然后,在检索查询时,您可以像这样使用

 property = MessageFormat.format(query1,new String[]{"org_id","organization","PRIMARY-KEY","454545452"});
同样,您可以在java代码中概括查询并设置值。

这取决于您想要的泛化级别。

查询是您的自定义类,以从属性文件中读取查询吗?是的,它是从我的类路径中读取属性文件。您可能需要查看MyBatis。请详细说明一下代码。我认为query1在属性文件中,第二行在java类中。什么是消息格式???。我认为您仍然在java类中硬编码列和表,这是我不喜欢的。是否有任何方法可以继续使用相同的方法,但读取列以及表名属性文件。MessageFormat是一个java类,上面的代码就是这样的。。我已经放置了属性占位符,在java中,我使用MessageFormat传递查询和一个要替换属性占位符的值数组,因此{0}将替换为“org_id”和类似的其他值。若您不想在java中编码tablename和column name,那个么您需要对属性文件中的每个表进行单独的属性查询。您也可以这样做,但是主键在运行时是可用的,我想可以使用占位符作为主键OK,我几乎没有疑问:我可以直接使用属性作为sql语句吗???我还需要一个样本属性文件剪你的建议。我可以使用
InputStream is=Queries.class.getResourceAsStream(propFileName)。。。道具载荷(is)我是对的!!!你可以根据需要使用任何东西。将上述属性粘贴到属性文件中,您将获得代码段。是的,你是对的。