11

MyBatis の動的 SQL で空の文字列を確認するにはどうすればよいですか? ドキュメンテーションで以下のコードを見つけましたが、null ではなく空の文字列を確認したいと思います。

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

2 に答える 2

24

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>
于 2013-03-15T19:02:24.913 に答える
3

英語を上手に話さないでください。お待ちいただいてどうもありがとうございます。

関数xmlファイルです。

<mapper namespace="org.jacknie.mybatis.Functions">
  <sql id="isBlank">
    <bind name="isBlank" value=":[@org.apache.commons.lang3.StringUtils@isBlank(#this)]" />
  </sql>
  <sql id="sysout">
    <bind name="sysout" value=":[@System@out.println(#this)]" />
  </sql>
</mapper>

マッパーxmlファイルです。

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

このヒントを考えてみてはどうですか...

ここにリンクの説明を入力

于 2016-12-24T08:35:03.410 に答える