#与$区别:

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>



如果参数不为空则查询条件有效。参数的数据类型为Collection、String 时参数不为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>