如何进行ibatis动态多条件组合查询

 <!--
在ibatis中使用安全的拼接语句,动态查询
ibatis比JDBC的优势之一,安全高效
说明文字在注释中
-->


  
< select  id ="selectAllProducts"  parameterClass ="Product"  resultMap ="ProductResult" >
    select id,note from Product
       
< dynamic  prepend ="WHERE" >
       
<!--  isNotNull判断参数是否存在,Integer类型  -->
            
< isNotNull  property ="id" >
                
<!--  isGreaterThan判断参数是否大于compareValue,isGreaterEquals是大于等于  -->
                
< isGreaterThan  prepend =" and "  property ="id"  compareValue ="0" >
                id = #id#
                
</ isGreaterThan >
            
</ isNotNull >
            
<!--  isNotEmpty判断字串不为空,isEmpty可以判断字串为空  -->
            
< isNotEmpty  prepend =" and "  property ="note" >
            
<!--  模糊查询不能用#,#在是用prepareStatement的?插入参数,$是文本替换  -->
            note like '%$note$%'
            
</ isNotEmpty >
        
</ dynamic >
  
</ select >
  
用Map传参数
  
  
< select  id ="selectAllProducts"  parameterClass ="java.util.HashMap"  resultMap ="ProductResult" >
    select id,note from Product
       
< dynamic  prepend ="WHERE" >
       
<!--  isPropertyAvailable判断属性是否有效  -->
          
< isPropertyAvailable  property ="id" >
            
< isNotNull  property ="id" >
                
<!--  isLessThan判断参数是否小于compareValue,isLessEquals是小于等于  -->
                
< isLessThan  prepend =" and "  property ="id"  compareValue ="10" >
                id = #id#
                
</ isLessThan >
            
</ isNotNull >
          
</ isPropertyAvailable >
        
</ dynamic >
  
</ select >
 
<!-- ------------------------------------------------------------------几个常用属性 -->

< isPropertyAvailable >  属性是存在
< isNotPropertyAvailable >  属性不存在
< isNull >  属性值是null
< isEmpty >  判断Collection.size < 1 或String.length()<1
<isEqual
>  等于
< isNotEqual >  不等于
< isGreaterThan >  大于
< isGreaterEqual >  大于等于
< isLessThan >  小于
< isLessEqual >  小于等于

 

你可能感兴趣的:(jdbc,ibatis)