在实际开发中,经常需要SQL查询的参数为map,而返回的结果集也是map的情况,不用去写繁琐的ResultMap.
其DAO接口代码如下:
public List getMySuperCardSpentDetail(Map map);
其DAO实现接口如下:
@Override
public List getMySuperCardSpentDetail(Map map) {
List list = getSqlMapClientTemplate().queryForList("***_user_super_card.selectMySuperCardSpentDetail", map);
return list;
}
其对应的SQLmap的XML如下:
<select id="selectMySuperCardSpentDetail" parameterClass="map" resultClass="java.util.HashMap" remapResults="true">
<!--
-->
select su.id,su.card_no,su.face_value,su.upc,su.valid_date,p.order_id,p.order_no,p.paid_amount,p.paid_type,p.paid_time
from **_user_super_card su
join **_order_payment p on (su.card_no = p.paid_card_no )
<dynamic prepend="WHERE">
<isNotNull prepend="and" property="id">
su.id = #id:Long#
</isNotNull>
</dynamic>
</select>
其中,parameterClass使用接口,resultClass使用具体的实现。
在jsp页面,可以直接这个返回的list
<c:forEach items="${detailList}" var="detail">
<ul class="uci_list_cont" id="credits1">
<li class="w240"><fl:fomatdate str="${detail.paid_time }" pattern="yyyy-MM-dd"/> </li>
<li class="w110">下单</li>
<li class="w240"><a href="/cec/activecard/cecOrder/orderDetail?orderNo=${detail.order_no }">${detail.order_no }</a></li>
<li class="w180">${detail.paid_amount }</li>
<li class="w100">${entity.leftValue }</li>
</ul>
</c:forEach>