在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 >
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> 小于等于