2017-02-21 47 views
-2

来自参数的输入将为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 

代码:

for(Object k:keys){ 
    String key = (String)k;  
    String [] mapValue = Properties.getProperty(key).split(","); 
    List<String> lList=Arrays.asList(mapValue); 
    if(key.startsWith("view") &&(lList.contains(tmpSrc.getSourceTableForUpdate()))){   
     dest.seteQuery(Properties.getProperty("")); // here i need to get the query1 value. 
    } 
} 

这个请大家指教。

+0

view1和query1是如何相关的?那只是你使用的一个约定?您可以从属性文件预处理数据以进行快速查询。或者,您可以以不同方式存储数据,例如XML/JSON。 – borowis

+1

这个文件是否有这样的结构,而不是一些XML或JSON配置的原因?除此之外,您可以尝试用'query'替换'view'并将其用作关键字,例如'String queryKey = key.replaceAll(“view”,“query”);'。 – Thomas

+0

@Borys Zibrov感谢您的回复。我不能使用Json或XML,因为这个要求是删除Json并将各种视图通用的查询外化。因此,所有具有相同查询的视图都保存在view1键中。如果我从View1中获得任何值,则必须执行query1中的查询。 – G3S

回答

0

你有什么输入?我敢打赌你的输入是A1000B2341。那么这个代码String [] mapValue = Properties.getProperty(key).split(",");是不正确的,因为A1000不是一个关键,而是一个值。如果是这样的情况下,最好的办法是进行预处理的所有属性从属性文件:

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来获得查询。

+1

非常感谢Borys!它的工作如我所料。感谢托马斯以及您的回应! – G3S

相关问题