2013-03-15 2 views
7

Как проверить пустую строку в динамическом SQL MyBatis? Я нашел код ниже в documentaiton, но я хочу проверить пустую строку, а не null.Как проверить пустую строку в MyBatis?

<select id="findActiveBlogWithTitleLike" parameterType="Blog" resultType="Blog"> 
    SELECT * FROM BLOG WHERE state = ‘ACTIVE’ 
    <if test="title != null"> 
     AND title like #{title} 
    </if> 
</select> 

ответ

11

В MyBatis вы можете использовать != '' для сравнения с пустой строкой, поэтому в запросе было бы что-то вроде:

<select id="findActiveBlogWithTitleLike" parameterType="Blog" resultType="Blog"> 
    SELECT * FROM BLOG WHERE state = ‘ACTIVE’ 
    <if test="title != null and title != ''"> 
    AND title like #{title} 
    </if> 
</select> 
+0

спасибо, работает –

+0

Вы можете. – partlov

+0

как насчет этого? "title.length()> 0". –

0

dont't говорят по-английски. Спасибо за вашего пациента.

Это файл функций xml.

<mapper namespace="org.jacknie.mybatis.Functions"> 
    <sql id="isBlank"> 
    <bind name="isBlank" value=":[@[email protected](#this)]" /> 
    </sql> 
    <sql id="sysout"> 
    <bind name="sysout" value=":[@[email protected](#this)]" /> 
    </sql> 
</mapper> 

Это файл конфигурации xper.

<mapper namespace="org.jacknie.test.TestMapper"> 
    <select id="selectTest" resultType="_int"> 
    <include refid="org.jacknie.mybatis.Functions.isBlank" /> 
    <include refid="org.jacknie.mybatis.Functions.sysout" /> 
    SELECT '1' FROM DUAL 
    <if test="#fn = isBlank, not(#fn(map.name))"> 
     <bind name="forLogging" value="#fn = sysout, #fn('Hello' + map.name)" /> 
    </if> 
    </select> 
</mapper> 

Как насчет думаю, что этот наконечник ...

enter link description here