【发布时间】:2020-09-01 02:11:54
【问题描述】:
使用 Java 8 、Oracle 11g 和 Spring Boot,我们通常运行 SQL 选择类似:
String sqlQuery="select col1,col2 from myTable where col1 = :colValue";
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("colValue", "xxx");
// Then run the query :
List<MyClass>= jdbcTemplate.query(sqlQuery,parameters,(rs, rowNum) -> new MyClass
(rs.getString("col1"),rs.getString("col2")) );
也可以提供 col1 值的列表
String sqlQuery="select col1,col2 from myTable where col1 in ( :colList) ";
Map<String, List<String>> parameters = new HashMap<String, List<String>();
List<String> myColList= Arrays.asList("xxx", "yyy");
parameters.put("colList", myColList );
但是如果我们想在列值中包含 SQL 通配符怎么办:
String sqlQuery="select col1,col2 from myTable where col1 like ( :colList) ";
List<String> myColList= Arrays.asList("%xxx%", "yyy%");
我们不能在 where 子句中混合 LIKE 和 IN 结构,那么还有其他方法吗?我知道我可以动态构建自己的 where 子句,但我试图避免这种情况。任何指针表示赞赏。
【问题讨论】:
-
@ArvindKumarAvinash 是的,但我把我原来的问题过于简单化了。我已经更新了问题以包含真正的问题
标签: java spring-boot oracle11g