IBatis查询条件为多个参数时如何配置

1) 用String代替

Java代码   收藏代码
  1. String sql = "uid = '" + username + "' and pwd='" + password + "'";  
  2. Integer r = (Integer) sqlMap.queryForObject("checkLogin", sql);  
 
Xml代码   收藏代码
  1. <select id="checkLogin" parameterClass="java.lang.String" resultClass="java.lang.Integer">  
  2.      SELECT count(*) AS value FROM userinfo WHERE $sql$  
  3. select>  
 

2)用 Map

Java代码   收藏代码
  1. Map map=new HashMap();  
  2. map.put("uid", username);  
  3. map.put("pwd", password);  
  4. Integer r = (Integer) sqlMap.queryForObject("checkLogin2", map);  

  一种写法:

Xml代码   收藏代码
  1. <select id="    " parameterClass="java.util.Map" resultClass="java.lang.Integer">  
  2.        SELECT count(*) AS value FROM userinfo WHERE uid=#uid# and pwd=#pwd#  
  3. select>  

  另一种写法

Xml代码   收藏代码
  1. <parameterMap class="java.util.HashMap" id="parameterMap">        
  2.     <parameter property="uid"/>        
  3.     <parameter property="pwd"/>   
  4. parameterMap>      
  5. <select id="checkLogin2" resultClass="java.lang.Integer" parameterMap="parameterMap">        
  6.      SELECT count(*) AS value FROM userinfo WHERE uid=? and pwd=?  
  7. select>   

3)用bean

Java代码   收藏代码
  1. public Student queryStudentsByNameAndId(HashMap hashMap)      {           
  2.   
  3.  Student s=null;            
  4. try {               
  5.       s=(Student)sqlMapClient.queryForObject("selectStudentByIdAndName",hashMap);                         
  6.  } catch (SQLException e) {                 
  7.       e.printStackTrace();           
  8.  }           
  9.       return s;       
  10.  }     
 
Xml代码   收藏代码
  1. <parameterMap class="java.util.HashMap" id="parameterMap">        
  2.       <parameter property="sid"/>        
  3.       <parameter property="sname"/>   
  4.  parameterMap>      
  5.   
  6. <select id="selectStudentByIdAndName" resultClass="Student" parameterMap="parameterMap">        
  7.        select * from student where  sid=? and sname=?    
  8. select>   

你可能感兴趣的:(javaEE)