1

mapper.xmlほぼ同じ条件のクエリがいくつかあります。共通部分を一箇所に書き込んで再利用することは可能ですか?

例えば:

  select count(*) from table1 t1 inner join table2 t2 where t1.id = t2.id;

同様に、別のクエリがあります。

  select id, name from table1 t1 inner join table2 t2 where t1.id = t2.id;

table1 t1 inner join table2 t2 where t1.id = t2.id;1つの場所に配置して、両方のクエリで再利用したいと思います。

さらに、私は次のようなものを持っています:

<if test="id != 0">
    AND id = #{id,jdbcType=INTEGER}
</if>
<if test="assignTo != 0">
    AND assign_to = #{assignTo,jdbcType=INTEGER}
</if>
<if test="status != 0">
    AND status = #{status,jdbcType=INTEGER}
</if>   

これは2つのクエリでも一般的です。

4

1 に答える 1

2

SQL フラグメントを使用できます。

たとえば、次のことができます。

<sql id="yourFragmentId1">
  table1 t1 inner join table2 t2 where t1.id = t2.id;
</sql>

また

<sql id="yourFragmentId2">
  <if test="id != 0">
    AND id = #{id,jdbcType=INTEGER}
  </if>
  <if test="assignTo != 0">
    AND assign_to = #{assignTo,jdbcType=INTEGER}
  </if>
  <if test="status != 0">
    AND status = #{status,jdbcType=INTEGER}
  </if>
</sql>

次に、クエリで、それぞれ<include refid="yourFragmentId1" />およびでそれらを参照します<include refid="yourFragmentId2" />

于 2012-10-19T16:29:30.317 に答える