如何动态地为预准备语句赋值



当前场景:

String query= "select emp_role from emp where emp_id = ?";
String query= "select address.phone_no from address, emp where address.address_id=emp.address_id and emp.emp_id = ?";
PreparedStatement prepatedStatement = connection.prepareStatement(query);
prepatedStatement.setInt(1, empId);
ResultSet rs = prepatedStatement.executeQuery();

预期方案:

当我有多个输入的查询时,如下所示

String query= "select emp_role from emp where emp_id = ? and emp_plan = ?";
String query= "select emp_id,emp_name from (select emp_id,emp_name from emp_1 where emp_1_id = ?)union(select emp_id,emp_name from emp_2 where emp_2_id = ?)";

我需要有一个通用的预置语句逻辑来执行此操作。

查看 - 如何动态创建预准备语句 - 并重用查询

这个逻辑工作正常,但我仍然必须设置值来显式映射。

没有自动的方法来做这些事情,但你可以通过以下方式改进它:

List<String> empParameters = getMeParameters();//may be factory here?
ResultSet rs = getResultSet(.....);
......
private ResultSet getResultSet(PreparedStatement prepatedStatement,   List<String> empParameters) {
     int i = 0;
     for (String empParameter : empParameters) {
         prepatedStatement.setInt(i++, empParameter);
     }
     return prepatedStatement.executeQuery();
}

最新更新