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>