我有一个包含多个搜索条件的搜索页面
- 员工姓名
- 员工ID
- 加入的日期
- 部门
ETC
用户可以提供一个或多个搜索条件。我需要查询数据库以获取搜索结果。
使用普通的 JDBC,有两个选项可以实现这一点。
- 通过附加用户提供的搜索条件来准备 SQL 查询。
前任:
String selectClause = "SELECT * FROM EMPLOYEES WHERE ";
String whereClause = "";
if(StringUtils.isNotBlank(empName)){
if(whereClause.length > 0){
whereClause += " AND ";
}
selectQuery += " EMP_NAME = " + empName;
}
if(StringUtils.isNotBlank(empID)){
if(whereClause.length > 0){
whereClause += " AND ";
}
selectQuery += " EMP_ID = " + empID;
}
//... and so on ...
- 使用
preparestatement
前任:
String query = "SELECT * FROM EMPLOYEES WHERE EMP_NAME = ? AND EMP_ID = ? DATE_OF_JOINING = ? AND DEPARTMENT = ?";
这个答案解释说,就像上面的 ex 1,ex2 可以修改,如下所示
String selectClause = "SELECT * FROM EMPLOYEES WHERE ";
String whereClause = "";
if(StringUtils.isNotBlank(empName)){
if(whereClause.length > 0){
whereClause += " AND ";
}
selectQuery += " EMP_NAME = ?";
}
if(StringUtils.isNotBlank(empID)){
if(whereClause.length > 0){
whereClause += " AND ";
}
selectQuery += " EMP_ID = ?";
}
//... and so on ...
然后仔细(记住参数索引)输入需要设置为准备好的语句。这听起来不是一个非常理想的解决方案。
有没有办法以优雅的方式做到这一点(没有 ORM 框架)?