我有多個查詢,其中我會做一些任務。重複使用mysql查詢
爲如:
<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>
有沒有其他更好的方法來做到這一點。並且查詢的返回類型也是哈希映射。
我想知道我們是否可以創建一個函數或方法,我們可以傳遞一些值作爲列或行名稱,然後執行以下操作而不是寫入多個查詢?
更多信息: 實際上,我正在尋找一種方法來編寫查詢一次,並使用它的所有方式,而無需多次輸入,正如我之前告訴過你的,我目前正在使用參考來做到這一點。 但我正在尋找一種方式,我不需要使用不同的選擇語句,然後調用包含標記。相反,我想寫一個函數,我可以將表名或列名從java控制器類傳遞給xml或查詢文件。所以它可以吸收這些值,然後考慮這些輸入並相應地採取行動。
像上面我必須執行或拉起來自不同表格的細節,但條件是幾乎相同的所有查詢。 所以我想創建一個函數,我可以從哪裏發送表中選擇和選擇什麼,然後條件應該是一般的地方,我可以傳遞值,然後它應該爲所有人做wrk。
示例代碼:
<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>
這是一個查詢,並具有一定的條件。類似於這個查詢,如果條件不同但有不同的表格,則會有許多查詢。 所以我想創建一個函數,我可以傳遞值,該函數應該爲具有相同條件的查詢操作。
您可以使用大小寫聲明。 – 2013-04-24 09:39:18
Thnx快速回復。 – f1r3wall 2013-04-24 09:39:52
請使用標籤來識別您的編程語言和/或平臺,以便那些可能知道答案的人能夠找到問題。 – 2013-04-24 10:38:55