Java 属性文件键值-基于另一个键的值获取一个键的值

Java 属性文件键值-基于另一个键的值获取一个键的值,java,properties,Java,Properties,args的输入将为A100。我需要在属性文件中检查这个值A100,并获得查询select*from xyz,它是另一个键的值。如何检查一个键中的值,并根据它获取另一个键的值?view1 A1000、A200、A300等的多个值直到50个视图都只有一个查询select*from xyz 属性文件: view1 = A1000,A200,A300 query1 = select * from xyz view2 = B100,B200,B300 query2 = select * from

args的输入将为A100。我需要在属性文件中检查这个值A100,并获得查询select*from xyz,它是另一个键的值。如何检查一个键中的值,并根据它获取另一个键的值?view1 A1000、A200、A300等的多个值直到50个视图都只有一个查询select*from xyz

属性文件:

view1 = A1000,A200,A300 

query1 = select * from xyz

view2 = B100,B200,B300

query2 = select * from abc
Map<String, String> queriesByKeys = new HashMap<>();
for (String key : props.keySet())
{
    if (!key.startsWith("view"))
        continue;

    String queryKey = key.replace("view", "query");
    String queryValue = props.getPropertyValue(queryKey);

    String ids = props.getPropertyValue(key);
    for (String id : ids.split(","))
        queriesByKeys.put(id, queryValue);
}
代码:


请对此提出建议。

您有哪些输入?我打赌你的输入是1000或B2341。然后这个代码字符串[]mapValue=Properties.getPropertykey.split,;不正确,因为A1000不是键而是值。如果是这种情况,最好是预处理属性文件中的所有属性:

view1 = A1000,A200,A300 

query1 = select * from xyz

view2 = B100,B200,B300

query2 = select * from abc
Map<String, String> queriesByKeys = new HashMap<>();
for (String key : props.keySet())
{
    if (!key.startsWith("view"))
        continue;

    String queryKey = key.replace("view", "query");
    String queryValue = props.getPropertyValue(queryKey);

    String ids = props.getPropertyValue(key);
    for (String id : ids.split(","))
        queriesByKeys.put(id, queryValue);
}

然后,您可以使用queriesByKeys按ID获取查询。

view1和query1的关系如何?那只是你的惯例?您可以预处理属性文件中的数据以进行快速查询。或者,您可以以不同的方式存储数据,例如xml/json。与某些xml或json配置相比,此文件具有这种结构有什么原因吗?此外,您还可以尝试将视图替换为查询,并将其用作键,例如字符串queryKey=key.replaceAllview,query@Borys Zibrov感谢您的回复。我不能使用Json或XML,因为这个要求是删除Json并将各种视图共有的查询外部化。因此,具有相同查询的所有视图都保留在view1键中。如果我从View1中得到任何值,我必须执行query1.Thomas中的查询-很抱歉,我得不到u。你能详细解释一下吗?替换在这里有什么帮助?您有什么输入?我打赌你的输入是1000或B2341。然后这个代码字符串[]mapValue=Properties.getPropertykey.split,;是不正确的,因为A1000不是一把钥匙,而是一个值。非常感谢Borys!正如我所预料的那样。感谢托马斯以及您的回复!