我想在getsqlMapClientTemplate()方法中执行prepardStatement。另一个查询结果会收到preparedStatement参数值的一个。是否可以像这样执行?
像
String query="select Id_no from employee";
String resultQuery="select empSalary from employeePay where Id=?";
prepareStatement ps=con.preprepareStatement(query); // Instead of connection reference i want to use getSqlMapClientTemplate
ResultSet rs=ps.executeQuery();
while(rs.next()){
//pst.setInt(1,rs.getInt(1)); // here if i want to pass dynamic value to execute resultQuery
pst.setInt(1,userGivenValue);
PrepareStatement pst=con.prepareStatement(resultQuery); //
pst.executeQuery();
forpreparedStatement而不是连接对象我想使用getSqlMapClientTemplate()方法。
答案 0 :(得分:0)
您不希望SqlMapClientTemplate
代替您JdbcTemplate
。
接下来你的解决方案存在缺陷,因为它属于1 + N选择问题,即。您执行单个查询以获取ID列表,然后为每个id发出另一个查询。创建单个查询,一次性完成所有操作更有效。
final String query = "select empSalary from employeePay where Id in (select Id_no from employee)"
JdbcTemplate template = getJdbcTemplate();
List<Long> salaries = template.queryForList(query, Long.class);
这样的事情。
或者,如果您想使用SqlMapClientTemplate
,只需将查询添加到ibatis配置中,让iBatis(而不是JdbcTemplate
)为您处理难题。