Ibatis多条件查询

  1. [b]ibatis 的多条件查询  
  2. ibatis自带的入门例子中,查询条件只有一个。多数情况下,查询条件都是多个的。如果要实现多条件查询,如何实现?  
  3. 百度了一下,有以下解决方案:  
  4. 1 ,在java代码中使用字符串拼接  
  5. 映射文件中这样写:  
  6.   
  7. view plaincopy to clipboardprint?  
  8. <select id="getBrno"  parameterClass= "java.lang.String"  resultMap= "bctlResult" >      
  9.     select brno,brname from bctl where $sql$      
  10. </select>    
  11. <select id="getBrno"  parameterClass= "java.lang.String"  resultMap= "bctlResult" >   
  12.  select brno,brname from bctl where $sql$   
  13. </select>   
  14.   
  15. 然后再java文件中拼写出SQL的条件语句:    
  16.   
  17. view plaincopy to clipboardprint?  
  18. String sql= " brno like" + b + "and pigday"  = p; // b和p都是变量。     
  19. String sql= " brno like" + b + "and pigday"  = p; // b和p都是变量。    
  20.   
  21. 再在方法中调用传递进去:  
  22.   
  23. view plaincopy to clipboardprint?  
  24. brList = sqlMap.queryForList("CR.getBrno" , sql);     
  25. brList = sqlMap.queryForList("CR.getBrno" , sql);    
  26.   
  27. 这是一种方法,很明显这种方法有一种弊端,就是sql语句需要写在java源文件中。如果需要更改查询条件,就不得不修改java文件,再重新编译。这与ibatis的本意有些违背。  
  28. 因此本人没有测试过以上方法是否可行。  
  29.   
  30. 2 ,直接在映射文件中配置参数  
  31. 映射文件这样写:  
  32.   
  33. view plaincopy to clipboardprint?  
  34. <!-- 多条件查询-->    
  35. <parameterMap   id="myParam"     class = "java.util.HashMap" >        
  36.   <parameter   property="id" />        
  37.   <parameter   property="name" />        
  38. </parameterMap>        
  39. <select   id="multConQuery"  parameterMap= "myParam"  resultClass= "Department" >        
  40.     select * from department where id = ? and name = ?          
  41. </select>     
  42. <!-- 多条件查询-->  
  43. <parameterMap   id="myParam"     class = "java.util.HashMap" >     
  44.   <parameter   property="id" />     
  45.   <parameter   property="name" />     
  46. </parameterMap>     
  47. <select   id="multConQuery"  parameterMap= "myParam"  resultClass= "Department" >     
  48.     select * from department where id = ? and name = ?       
  49. </select>    
  50.   
  51. java文件中这样调用:  
  52.   
  53. view plaincopy to clipboardprint?  
  54. public  Department queryDepartmentByIdAndName( int  id,String name)     
  55. {     
  56.     Department dept = new  Department();     
  57.     try     
  58.     {     
  59.         sqlMapClient.startTransaction();     
  60.         HashMap hmParam = new  HashMap();     
  61.         hmParam.put("id" ,id);     
  62.         hmParam.put("name" ,name);     
  63.         sqlMapClient.queryForObject("multConQuery" ,hmParam,dept);     
  64.         sqlMapClient.commitTransaction();     
  65.     }     
  66.     catch (Exception e)     
  67.     {     
  68.         e.printStackTrace();     
  69.     }     
  70.     return  dept;     
  71.  }    
  72.   
  73.    
  74.   
  75. 3 、动态查询方法  
  76.   
  77. 详细 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值