我有多个查询,其中我会做一些任务。
例如:
<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>
这是一个查询,有一些条件。与此查询类似,有许多具有相同 if 条件但表不同的查询。所以我想创建一个函数,我可以在其中传递值,并且该函数应该适用于具有相同条件的所有查询。