1) 用String代替
String sql = "uid = '" + username + "' and pwd='" + password + "'";
Integer r = (Integer) sqlMap.queryForObject("checkLogin", sql);
<select id="checkLogin" parameterClass="java.lang.String" resultClass="java.lang.Integer"> SELECT count(*) AS value FROM userinfo WHERE $sql$ </select>
2)用 Map
Map map=new HashMap();
map.put("uid", username);
map.put("pwd", password);
Integer r = (Integer) sqlMap.queryForObject("checkLogin2", map);
一种写法:
<select id=" " parameterClass="java.util.Map" resultClass="java.lang.Integer"> SELECT count(*) AS value FROM userinfo WHERE uid=#uid# and pwd=#pwd# </select>
另一种写法
<parameterMap class="java.util.HashMap" id="parameterMap"> <parameter property="uid"/> <parameter property="pwd"/> </parameterMap> <select id="checkLogin2" resultClass="java.lang.Integer" parameterMap="parameterMap"> SELECT count(*) AS value FROM userinfo WHERE uid=? and pwd=? </select>
3)用bean
public Student queryStudentsByNameAndId(HashMap<String,String> hashMap) {
Student s=null;
try {
s=(Student)sqlMapClient.queryForObject("selectStudentByIdAndName",hashMap);
} catch (SQLException e) {
e.printStackTrace();
}
return s;
}
<parameterMap class="java.util.HashMap" id="parameterMap"> <parameter property="sid"/> <parameter property="sname"/> </parameterMap> <select id="selectStudentByIdAndName" resultClass="Student" parameterMap="parameterMap"> select * from student where sid=? and sname=? </select>