2016-06-24 3 views
2

Привет Вопрос довольно прямо впередВыберите имя столбца динамически в namedParameterJdbcTemplate весной

Мы все знаем, этот запрос работает

String query = SELECT * FROM DATABASE_LOCKER WHERE LAST_HOUR = :last_hour 

     MapSqlParameterSource parameters = new MapSqlParameterSource(); 
     parameters.addValue("last_hour","2"); 


getNamedParameterJdbcTemplate().update(
        QueryConstants.query, parameters); 

Но возможно ли это в любом случае ?? То есть мне нужно дать имя столбца таблицы динамически

String query = SELECT * FROM DATABASE_LOCKER WHERE :last_hour = 1 

    MapSqlParameterSource parameters = new MapSqlParameterSource(); 
    parameters.addValue("last_hour","LAST_HOUR"); 


getNamedParameterJdbcTemplate().update(
       QueryConstants.query, parameters); 

ответ

3

Почему бы вам не использовать его как ниже:

if(yourCondition){ 
columnName = "ABCD"; 
}else{ 
columnName = "A1B2C3"; 
} 

В кодексе можно использовать имя столбца динамически, как:

public/ private Object/void someDaoMethod(String columnName, String value){ 
    String query = "SELECT * FROM DATABASE_LOCKER WHERE "+columnName+"="+value"; 
    ..... 

    } 
+0

Привет Спасибо за ваш ответ. Но я поддерживаю запрос Строки в отдельном файле, и я хотел бы сохранить строку запроса в одном фрагменте. Любая помощь будет оценена – stranger

0

Если вы используете файл свойств, я мог бы предложить вам, как это ...

queryToGetFromDabaseLocker = SELECT * FROM DATABASE_LOCKER WHERE {0} = {1} 

в коде, вы можете просто использовать как:

считанного значения файла свойства, как это:

Properties properties = new Properties(); 
try { 
    properties.load(new FileInputStream("path/filename")); 
} catch (IOException e) { 
    ... 
} 

итерация как:

String query = ""; 
String formatteQuery = ""; 
    for(String key : properties.stringPropertyNames()) { 
     if(key.equals("queryToGetFromDabaseLocker")){ 
     query = properties.getProperty(key); 
     formatteQuery = MessageFormat.format(query , "YourColumnName", "YourValue"); 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^