我有多个查询,其中我会做一些任务。重复使用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