複数のクエリがあり、そこでいくつかのタスクを実行します。
例:
<pre>
select * from test
where something
if check A
if check B
if check C
compare something.
For one table.
</pre>
同様に、さまざまなテーブルに対して他の多くのクエリがあります。
<pre>
select * from test
where something
if check A
if check B
if check C
compare something.
</pre>
currently i am using reference.
select * from test
where something
<pre>
<include refId="test"/>
</pre>
<sql id="test">
if check A
if check B
if check C
compare something
</sql>
これを行うには他に良い方法はありますか。また、クエリの戻り値の型はハッシュ マップです。
複数のクエリを記述する代わりに、いくつかの値を列または行の名前として渡し、次のことを実行できる関数またはメソッドを作成できるかどうかを知りたいですか?
詳細情報:実際には、クエリを一度記述し、何度も入力せずにずっと使用する方法を探しています。以前に私は現在参照を使用しています。しかし、別のselectステートメントを使用してからincludeタグを呼び出す必要がない方法を探しています。代わりに、テーブル名または列名を Java コントローラー クラスから xml またはクエリ ファイルに渡すことができる関数を作成したいと考えています。そのため、値を取り込んで、それらの入力を考慮し、それに応じて行動できます。
上記のように、さまざまなテーブルから詳細を実行または取得する必要がありますが、条件はすべてのクエリでほぼ同じです。そのため、選択する場所と選択するものからテーブルを送信できる関数を作成したいのですが、値を渡すことができる条件は一般的である必要があり、すべてに対して作業を行う必要があります。
コード例:
<select id="searchPatientAdmissionByDates" resultType="hashMap" parameterType="hashMap">
SELECT COUNT(DISTINCT(admission_details.PATIENT_ID)) AS CASECOUNT
FROM admission_details,patient
WHERE
admission_details.PATIENT_ID = patient.id
<if test="admissionDate !=null">
AND
FROM_DATE >= #{admissionDate}
</if>
<if test="admissionDateThru !=null">
AND
FROM_DATE <= #{admissionDateThru}
</if>
<if test="dischargeDate !=null">
AND
THRU_DATE >= #{dischargeDate}
</if>
<if test="dischargeDateThru !=null">
AND
THRU_DATE <= #{dischargeDateThru}
</if>
</select>
これはクエリであり、いくつかの条件があります。このクエリと同様に、if 条件は同じだがテーブルが異なるクエリが多数あります。そのため、値を渡すことができる関数を作成したいと思います。その関数は、同じ条件を持つすべてのクエリに対して動作する必要があります。