概述xcode
在使用XML寫SQL語句的時候,遇到參數傳遞的兩種方式,也就是Mapper裏面帶@Param註解和不帶的狀況,容易混淆,對應XML的寫法也不相同,使用的時候要注意對照代碼比對(備註XML裏面的關鍵字containsKey,大小寫都須要正確)app
Mapper代碼:dom
List<InIncome101Report> queryListByPeriod(Page<InIncome101Report> page, Map<String,Object> params);//非註解@Param List<InIncome101Report> queryListByVoucherdata(Page<InIncome101Report> page, @Param("params") Map<String,Object> params);//帶註解的
XML內容spa
一、非@paramcode
<select id="queryListByPeriod" resultType="com.dbgo.acme.report.domain.model.InIncome101Report"> SELECT T.supplier_name supplierName, T.supplier_tax_code supplierTaxcode, COUNT (0) sumCount FROM tbl_in_incomedetail T WHERE T.org_id = #{orgId} <if test="_parameter.containsKey('periodstart')"> AND T.tax_period>= #{periodstart} </if> <if test="_parameter.containsKey('periodend')"> AND T.tax_period <![CDATA[<=]]>#{periodend} </if> GROUP BY T.supplier_name, T.supplier_tax_code </select>
二、帶@paramblog
<select id="queryListByVoucherdata" resultType="com.dbgo.acme.report.domain.model.InIncome101Report"> SELECT T.suppliername supplierName, T.suppliertax_code supplierTaxcode, FROM tbl_in_incomedetail T WHERE T.org_id = #{params.orgId} AND T.vouchedata >=#{params.start} AND T.vouchedata <![CDATA[<=]]>#{params.end} GROUP BY T.suppliername , T.suppliertax_code </select>