我应该如何着手创建一个可以执行此操作的Java方法?
SELECT * FROM test.new_table
WHERE IDS LIKE "%101G%"
AND IDS LIKE "%14F%"
AND IDS LIKE "%701G%"
我意识到我当前的代码是OR操作而不是AND
public List<String> readFileNamesBy(String tableName, String categoryName, List<String> filterValues) {
String sql = "select * from " + tableName + " where "+ categoryName + " like ?";
JdbcTemplate jt = new JdbcTemplate(dataSource);
final List<String> fileNames = new ArrayList<String>();
for (String filterValue : filterValues){
jt.query(sql,
new Object[] { filterValue },
new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
fileNames.add(rs.getString("FILE_NAME"));
}});
}
return fileNames;
}
注意,List <String> filterValues
的长度可以变化......这就是为什么我决定在这里使用for循环。
顺便说一句,如果有关系的话,我使用的是Java8(因为这是整个程序的编写),我真的不能做任何事情。
下面是我对该方法的实现(仅供参考)
List <String> filterValues = Arrays.asList("%101G%", "%14F%");
List <String> hi = dbUtil.readFileNamesBy("test.new_table","IDS", filterValues);
1条答案
按热度按时间nsc4cvqm1#
看起来您需要构建一个filter方法来获取值输入,然后以动态方式将其构造为SQL选择语句。假设来自用户输入的值是一个Map对象,如下所示:
然后您可以使用下面的buildSelectQuery方法生成SQL查询:
最后,您可以通过调用上述方法生成SQL选择查询: