2013-03-15 7 views
7

Jak sprawdzić pusty ciąg w dynamicznym SQL z MyBatis? Znajduję poniższy kod w dokumencie documentit, ale chcę sprawdzić pusty łańcuch, a nie null.Jak sprawdzić pusty ciąg w MyBatis?

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

Odpowiedz

11

W MyBatis można użyć != '' porównać z pustym ciągiem znaków, więc w zapytaniu byłoby coś jak:

<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

dziękuję, pracując –

+0

Zapraszamy. – partlov

+0

co powiesz na to? "title.length()> 0". –

0

dont't mówią dobrze po angielsku. Dziękuję za twojego pacjenta.

Plik funkcji 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> 

Jest to plik xml odwzorowania.

<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> 

Jak myśleć o tym wskazówka ...

enter link description here