java.sql.SQLException: No value

2018-08-13  本文已影响0人  耗纸锅

今天,遇上了java.sql.SQLException: No value specified for parameter3
List<Map<String, String>> list = (ArrayList) jdbcTemplate.query("select packetRule.ruleName , packetRule.paraCheck , packetRule.ruleCheck ,packetRule.type ,packetManager.packetName " +
" from packetRule,packetManager where" +
" ruleName like concat('%',?,'%') " +
"or paraCheck like concat('%',?,'%')" +
"or ruleCheck like concat('%',?,'%')" +
" AND packetRule.packetId = packetManager.id AND packetManager.packetName = '" + packetName +
"'ORDER BY packetRule.id DESC ",
new PreparedStatementSetter() {
@Override
public void setValues(java.sql.PreparedStatement preparedStatement) throws SQLException {
preparedStatement.setString(1, searchKey);
preparedStatement.setString(2, searchKey);
}
},
new RowMapperResultSetExtractor(new RowMapper() {
public Object mapRow(ResultSet rs, int index)
throws SQLException {
Map u = new HashMap(); //可以是自己的JavaBean值对象(简单Java对象POJO)
u.put("ruleName", rs.getString("ruleName"));
u.put("paraCheck", rs.getString("paraCheck"));
u.put("ruleCheck", rs.getString("ruleCheck"));
u.put("type", rs.getString("type"));
u.put("packetName", rs.getString("packetName"));
return u;
}
}));
排查后发现,是由于第三个参数没有对应上的原因。故:增加一个值:
preparedStatement.setString(3, searchKey);

上一篇下一篇

猜你喜欢

热点阅读