Java 如何为PreparedStatement动态赋值?

Java 如何为PreparedStatement动态赋值?,java,sql,prepared-statement,Java,Sql,Prepared Statement,当前情景: 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(

当前情景:

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 = ?";
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 = ?)";
我需要一个通用的prepatedStatement逻辑来完成这项工作

看看-


这个逻辑工作得很好,但我仍然需要设置显式映射的值

没有自动完成这些任务的方法,但您可以通过以下方式进行改进:

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();
}