IBatis 动态查询条件

#$区别:

1.#是把传入的数据当作字符串,如果 order by #field# ,#field#传入的是id,sql语句生成是这样,order by "id",这当然会报错..

2.$传入的数据直接生成在sql里,如果 order by $field$ ,如$field$ 传入的是id,sql语句生成是这样,order by id, 这就对了. 
3.$
方式一般用于传入数据库对象.例如传入表名如果传入动态sql或条件则注意防sql注入

4.#方式一般用于传入插入/更新的值或查询/删除的where条件

另附<dynamic prepend ="字符串"> 属性关键字:

 

 

属性关键字

含义

 

<isEqual>

如果参数相等于值则查询条件有效。

<isNotEqual>

如果参数不等于值则查询条件有效。

<isGreaterThan>

如果参数大于值则查询条件有效。

<isGreaterEqual>

如果参数等于值则查询条件有效。

<isLessEqual>

如果参数小于值则查询条件有效。如下所示:

<isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” >

ADOLESCENT = ‘TRUE’

</isLessEqual>

<isPropertyAvailable>

如果参数有使用则查询条件有效。

<isNotPropertyAvailable>

如果参数没有使用则查询条件有效。

<isNull>

如果参数为NULL则查询条件有效。

<isNotNull>

如果参数不为NULL则查询条件有效。

<isEmpty>

如果参数为空则查询条件有效。

<isNotEmpty>

如果参数不为空则查询条件有效。参数的数据类型为CollectionString 时参数不为NULL“”。如下所示:

<isNotEmpty prepend=”AND” property=”firstName” >

FIRST_NAME=#firstName#

</isNotEmpty>

<isParameterPresent>

如果参数类不为NULL则查询条件有效。

<isNotParameterPresent>

Checks to see if the parameter object is not present (null). Example Usage:

<isNotParameterPresent prepend=”AND”>

EMPLOYEE_TYPE = ‘DEFAULT’

</isNotParameterPresent>

 

你可能感兴趣的:(ibatis)