2016-07-04 24 views
0

MyBatis-3でフィルタリングするために一般的なクエリテンプレートを使用したいと思います。私のテンプレートは次のようになります。MyBatisパラメータ渡し

<sql id="filter"> 
    SELECT * FROM (${subquery}) LIMIT ${page}, 20 
</sql> 

サブクエリーのプレースホルダは、どのようなクエリでも受け入れることができます。サブクエリをパラメータとして渡そうとしました。しかし、残念ながらこれは機能しません、サブクエリは空です。私はプロパティの値が動的な値を受け入れる可能性があるのだろうか?

<select 
    id="find" 
    parameterType="some.page" 
    resultMap="map"> 
    <include refid="some.namespace.filter"> 
     <property name="subquery" value="${subquery}"/> 
     <property name="page" value="#{page}"/> 
    </include> 
</select> 

<sql id="subquery"> 
    SELECT * FROM test_table ORDER BY id 
</sql> 

答えて

0

なぜこれを行うには別の方法を変更しませんか?あなたが言っている機能がMyBatisによってサポートされているとは思わない、多分あなたは次のようにすることができます。

<select 
    id="find" 
    parameterType="some.page" 
    resultMap="map"> 
    SELECT * FROM (<include refid="subquery">) t LIMIT ${page}, 20 
</select> 

<sql id="subquery"> 
    SELECT * FROM test_table ORDER BY id 
</sql> 
+0

私はこの方法で同じ結果を得ることができます。私はこれを繰り返し続けたくないので、共通のテンプレートを使いたいと思っています。SELECT * FROM($ {subquery})LIMIT $ {page}、20' – user3502676

+0

@ user3502676私の限られた知識で、Mybatisはこれまで述べてきた機能'Mybatis'がこれをサポートしていても、この簡単なクエリ' SELECT * FROM($ {subquery})LIMIT $ {page}、20'を繰り返す必要はありませんが、これを繰り返す必要はありませんinlclude' '、それ? – Blank

関連する問題