2015-07-24 3 views
0

У меня есть следующие функции:Чтение значения из файла свойств во время выполнения

public void execute(Tuple input, BasicOutputCollector collector) { 

    String term = input.getString(0); 
    int year = input.getInteger(1); 
    int month = input.getInteger(2); 
    int day = input.getInteger(3); 
    int hour = input.getInteger(4); 
    int dayofyear = input.getInteger(5); 
    int weekofyear = input.getInteger(6); 
    int productcount = input.getInteger(7); 

    /* 
    * Inserting Values In Cassandra 
    */ 

    String insertUpdateTable = "UPDATE TopQuery SET count = count + 1 " 
      + "where term = \'" + term + "\' AND year = " + year 
      + " AND month = " + month + " AND day = " + day 
      + " AND hour = " + hour + " AND dayofyear = " + dayofyear 
      + " AND weekofyear = " + weekofyear + " AND productcount = " 
      + productcount + ";"; 

    session.executeAsync(insertUpdateTable); 

} 

Здесь я буду получать все значения, как term, year, month, day, hour, dayofyear, weekofyearproductcount и во время выполнения и вставляет его в DB Cassandra.

Поскольку эта строка постоянна и не изменяется, я хочу ее разделить и поместить в файл свойств.

Я уже помещал структуру таблицы в файл свойств и получал ее оттуда. Итак, в будущем, если мне нужно изменить структуру таблицы, мне не нужно редактировать код, вместо этого я могу просто изменить свойства файл.

Но, как сохранить файл insertUpdateTable в файле свойств, чтобы он считывал данные во время выполнения и обновлял БД?

+1

Вы можете посмотреть на ['Свойства'] (http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html) и [' PreparedStatement'] (http://docs.oracle.com/javase /8/docs/api/java/sql/PreparedStatement.html). Кроме того, есть структурные изменения, которые заставят код быть измененным. Подумайте о добавлении столбца ... – Seelenvirtuose

+0

'PreparedStatement: объект, представляющий предкомпилированный оператор SQL. 'Он работает только для SQL или для других dbs? –

+0

@Seelenvirtuose: Cassandra также поддерживает 'PreparedStatement'. То, что я искал. Спасибо! –

ответ

0

Чтобы прочитать файл недвижимости, вы можете использовать класс Properties.

Класс «Свойства» представляет собой постоянный набор свойств. Свойства можно сохранить в потоке или загрузить из потока. Каждый ключ и его соответствующее значение в списке свойств представляют собой строку.

Но я не уверен, что это хорошая идея поместить SQL (или другой код) в файл свойств. Нет никакой разницы в редактировании java или файла свойства для изменения SQL. В конце концов, это изменение кода, которое требует тестирования и развертывания. В каждом нетривиальном проекте вы все равно хотите автоматизировать эти шаги (ant, maven, ...).

0

в xyz.properties поместить значение как этот

запроса = *************

Попробовать это

getProperties(){ 
       Properties prop = new Properties(); 
       String propFileName = "xyz.properties"; 

       inputStream = getClass().getClassLoader().getResourceAsStream(propFileName); 

       prop.load(inputStream); 
       String query= prop.getProperty("query"); 
       } 
Смежные вопросы