在 spring 的 namedParameterJdbcTemplate 中动态选择列名
Choose column name dynamically in namedParameterJdbcTemplate in spring
嗨,这个问题很简单
我们都知道这个查询有效
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);
但这有可能吗??那就是我需要动态地给一个table的列名
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);
你为什么不像下面这样使用它:
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";
.....
}
如果您使用的是属性文件,我本可以建议您这样...
queryToGetFromDabaseLocker = SELECT * FROM DATABASE_LOCKER WHERE {0} = {1}
在代码中,您可以简单地使用 like :
像这样读取 属性 文件值:
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");
}
}
嗨,这个问题很简单
我们都知道这个查询有效
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);
但这有可能吗??那就是我需要动态地给一个table的列名
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);
你为什么不像下面这样使用它:
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";
.....
}
如果您使用的是属性文件,我本可以建议您这样...
queryToGetFromDabaseLocker = SELECT * FROM DATABASE_LOCKER WHERE {0} = {1}
在代码中,您可以简单地使用 like :
像这样读取 属性 文件值:
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");
}
}