Ibatis使用Map作为映射结果,进行多表连接查询

第一步:XML文件ResultMap和查询语句的编写

1、resultMap内容

 <resultMap id="OrderMap" class="java.util.HashMap" >
    <result column="ID" property="id" jdbcType="DECIMAL" />
    <result column="ORDER_NO" property="orderNo" jdbcType="VARCHAR" />
    <result column="CREATE_DATE" property="createDate" jdbcType="TIMESTAMP" javaType="java.util.Date"/> <!--可以避免出现oracle.sql.TIMESTAMP cannot be cast to java.util.Date-->
    <result column="CREATE_USER_NAME" property="createUserName" jdbcType="VARCHAR" />
    <result column="TOTAL_FEE" property="totalFee" jdbcType="DECIMAL" />
    <result column="ORDER_STATUS" property="orderStatus" jdbcType="VARCHAR" />
    <result column="ROOM_NO" property="roomNo" jdbcType="VARCHAR" />
    <result column="ROOM_TYPE" property="roomType" jdbcType="VARCHAR" />
    <result column="NUM" property="num" jdbcType="DECIMAL" /> 
    <result column="DEPOSIT" property="deposit" jdbcType="DECIMAL" />
   </resultMap>
2、查询用到的SQL语句
<select id="selectOrdersByMap"  resultMap="OrderMap" parameterClass="map" remapResults="true">
  	 select tr.id,
  	        tr.order_no,
            tr.status order_status,
	        tu.name create_user_name,
	        tr.create_date,
	        tr.total_fee,
	        td.room_no,
	        tm.type room_type,
	        td.num,
	        td.deposit
     from t_order tr
     left join t_order_detail td
     on tr.id = td.order_id
     left join t_user tu
     on tr.create_user_id = tu.id
     left join t_room tm 
     on td.room_no = tm.room_no
     where 1=1
  		  <isNotEmpty property="orderNo">
  		      and tr.order_no = #orderNo#
  		  </isNotEmpty>
  		  <isNotEmpty property="orderStatus">
  		      and tr.status = #orderStatus#
  		  </isNotEmpty>
  		  <isNotEmpty property="roomNo">
  		      and td.room_no = #roomNo#
  		  </isNotEmpty>
  		   <isNotEmpty property="startTime">
  		        <![CDATA[ and  tr.create_date >= #startTime#]]>
  		  </isNotEmpty>
  		  <isNotEmpty property="endTime">
  		       <![CDATA[  and  tr.create_date <= #endTime# ]]>
  		  </isNotEmpty>
  </select>
第二步:DAO层的编写

public List<Map> selectOrderListByMap(Map map) {
		return getSqlMapClientTemplate().queryForList("T_ORDER.selectOrdersByMap", map);
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值