Welcome to Yumao′s Blog.
相比在Ibatis中我們都會接觸過非常好用的SQL標簽
在SQL標簽内有各種各樣好用的方法,例如
<isEqual>, <isNotEqual>, <isGreaterThan>, <isGreaterEqual>,<isLessEqual>...
但是在項目遷移到Mybatis之後
系統將提示你的這邊標簽不可用
查找官方文檔后,得出以下對應結構
isNull/isNotNull 標簽
<isNull prepend="AND" property="order.id" >
ACCOUNT.ACCOUNT_ID = ORDER.ACCOUNT_ID(+)
</isNull>
<isNotNull prepend="AND" property="FirstName" open="(" close=")">
( ACC_FIRST_NAME = #FirstName#
<isNotNull prepend="OR" property="LastName">
ACC_LAST_NAME = #LastName#
</isNotNull>
)
</isNotNull>
<isNotNull prepend="AND" property="EmailAddress">
ACC_EMAIL like #EmailAddress#
</isNotNull>
對應MyBatis語句
<if test="order.id == null ">
AND ACCOUNT.ACCOUNT_ID = ORDER.ACCOUNT_ID(+)
</if>
<if test="FirstName != null ">
( AND ( ACC_FIRST_NAME = #{FirstName}
<if test="LastName != null ">
OR ACC_LAST_NAME = #{LastName}
</if>
)
)</if>
<if test="EmailAddress != null ">
AND ACC_EMAIL like #{EmailAddress}
</if>
isGreaterThan 標簽
<isGreaterThan prepend="AND" property="Id" compareValue="0">
ACC_ID = #Id#
</isGreaterThan>
對應MyBatis語句
<if test="Id > 0">
AND ACC_ID = #{Id}
</if>
isEqual/isNotEqual 標簽
<isEqual prepend="AND" property="status" compareValue="Y">
MARRIED = ‘TRUE'
</isEqual>
<isNotEqual prepend="AND" property="status" compareValue="N">
MARRIED = ‘FALSE'
</isNotEqual>
對應MyBatis語句
<if test="status == Y">
AND MARRIED = ‘TRUE'
</if>
<if test="status <> N">
AND MARRIED = ‘FALSE'
</if>
isEqual/isNotEqual 標簽
<isEqual prepend="AND" property="status" compareValue="Y">
MARRIED = ‘TRUE'
</isEqual>
<isNotEqual prepend="AND" property="status" compareValue="N">
MARRIED = ‘FALSE'
</isNotEqual>
對應MyBatis語句
<if test="status == Y">
AND MARRIED = ‘TRUE'
</if>
<if test="status <> N">
AND MARRIED = ‘FALSE'
</if>
isGreaterThan/isGreaterEqual/isLessEqual 標簽
<isGreaterThan prepend="AND" property="age" compareValue="18">
ADOLESCENT = ‘FALSE'
</isGreaterThan>
<isGreaterEqual prepend="AND" compareProperty="shoeSize" compareValue="12">
BIGFOOT = ‘TRUE'
</isGreaterEqual>
<isLessEqual prepend="AND" property="age" compareValue="18">
ADOLESCENT = ‘TRUE'
</isLessEqual>
對應MyBatis語句
<if test="age > 18">
AND ADOLESCENT = ‘FALSE'
</if>
<if test="shoeSize >= 12">
AND BIGFOOT = ‘TRUE'
</if>
<if test="age < 18">
AND ADOLESCENT = ‘TRUE'
</if>
isPropertyAvailable/isNotPropertyAvailable 標簽
<isPropertyAvailable property="id" >
ACCOUNT_ID=#id#
</isPropertyAvailable>
<isNotPropertyAvailable property="age" >
STATUS='New'
</isNotPropertyAvailable>
對應MyBatis語句
<if test="id != null ">
ACCOUNT_ID=#{id}
</if>
<if test="age == null ">
STATUS='New'
</if>
isNotEmpty 標簽
<isNotEmpty property="firstName" >
LIMIT 0, 20
</isNotEmpty>
<isNotEmpty prepend="AND" property="firstName" >
FIRST_NAME LIKE '%$FirstName$%'
</isNotEmpty>
對應MyBatis語句
<if test=" firstName != null and firstName != '' ">
LIMIT 0, 20
</if>
<if test=" firstName != null and firstName != '' ">
AND FIRST_NAME LIKE '%$FirstName$%'
</if>