mybatis resultType和result Map的區別
阿新 • • 發佈:2018-12-16
使用resultType進行輸出對映,只有查詢出來的列名和pojo中的屬性名一致,該列才可以對映成功。
如果查詢出來的列名和pojo的屬性名不一致,通過定義一個resultMap對列名和pojo屬性名之間作一個對映關係。
舉例:
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.hand.tms.orderstatus.mapper.EdiIftstaMapper"> <resultMap id="BaseResultMap" type="com.hand.tms.orderstatus.dto.EdiIftsta"> <result column="ID" property="id" jdbcType="VARCHAR" /> <result column="DOCUMENT_NO" property="documentNo" jdbcType="VARCHAR" /> <result column="CREAT_DATE" property="creatDate" jdbcType="VARCHAR" /> <result column="SELECT_DATE" property="selectDate" jdbcType="VARCHAR" /> <result column="SELECT_STATUS" property="selectStatus" jdbcType="VARCHAR" /> <result column="CZ_ID" property="czId" jdbcType="VARCHAR" /> <result column="CZ_NAME" property="czName" jdbcType="VARCHAR" /> <result column="CZ_ADDR1" property="czAddr1" jdbcType="VARCHAR" /> <result column="CZ_ADDR2" property="czAddr2" jdbcType="VARCHAR" /> <result column="CZ_ADDR3" property="czAddr3" jdbcType="VARCHAR" /> <result column="CZ_CITY" property="czCity" jdbcType="VARCHAR" /> <result column="CZ_POST" property="czPost" jdbcType="VARCHAR" /> <result column="CZ_CODE" property="czCode" jdbcType="VARCHAR" /> <result column="CN_ID" property="cnId" jdbcType="VARCHAR" /> <result column="CN_NAME" property="cnName" jdbcType="VARCHAR" /> <result column="CN_ADDR1" property="cnAddr1" jdbcType="VARCHAR" /> <result column="CN_ADDR2" property="cnAddr2" jdbcType="VARCHAR" /> <result column="CN_ADDR3" property="cnAddr3" jdbcType="VARCHAR" /> <result column="CN_CITY" property="cnCity" jdbcType="VARCHAR" /> <result column="CN_POST" property="cnPost" jdbcType="VARCHAR" /> <result column="CN_CODE" property="cnCode" jdbcType="VARCHAR" /> <result column="DP_ID" property="dpId" jdbcType="VARCHAR" /> <result column="DP_NAME" property="dpName" jdbcType="VARCHAR" /> <result column="DP_ADDR1" property="dpAddr1" jdbcType="VARCHAR" /> <result column="DP_ADDR2" property="dpAddr2" jdbcType="VARCHAR" /> <result column="DP_ADDR3" property="dpAddr3" jdbcType="VARCHAR" /> <result column="DP_CITY" property="dpCity" jdbcType="VARCHAR" /> <result column="DP_POST" property="dpPost" jdbcType="VARCHAR" /> <result column="DP_CODE" property="dpCode" jdbcType="VARCHAR" /> <result column="OP_ID" property="opId" jdbcType="VARCHAR" /> <result column="OP_NAME" property="opName" jdbcType="VARCHAR" /> <result column="OP_ADDR1" property="opAddr1" jdbcType="VARCHAR" /> <result column="OP_ADDR2" property="opAddr2" jdbcType="VARCHAR" /> <result column="OP_ADDR3" property="opAddr3" jdbcType="VARCHAR" /> <result column="OP_CITY" property="opCity" jdbcType="VARCHAR" /> <result column="OP_POST" property="opPost" jdbcType="VARCHAR" /> <result column="OP_CODE" property="opCode" jdbcType="VARCHAR" /> <result column="FW_ID" property="fwId" jdbcType="VARCHAR" /> <result column="FW_NAME" property="fwName" jdbcType="VARCHAR" /> <result column="FW_ADDR1" property="fwAddr1" jdbcType="VARCHAR" /> <result column="FW_ADDR2" property="fwAddr2" jdbcType="VARCHAR" /> <result column="FW_ADDR3" property="fwAddr3" jdbcType="VARCHAR" /> <result column="FW_CITY" property="fwCity" jdbcType="VARCHAR" /> <result column="FW_POST" property="fwPost" jdbcType="VARCHAR" /> <result column="FW_CODE" property="fwCode" jdbcType="VARCHAR" /> <result column="TOTAL_WEIGHT" property="totalWeight" jdbcType="DECIMAL" /> <result column="WEIGHT_CODE" property="weightCode" jdbcType="VARCHAR" /> <result column="TOTAL_VOLUME" property="totalVolume" jdbcType="DECIMAL" /> <result column="VOLUME_CODE" property="volumeCode" jdbcType="VARCHAR" /> <result column="TOTAL_QTY" property="totalQty" jdbcType="DECIMAL" /> <result column="QTY_CODE" property="qtyCode" jdbcType="VARCHAR" /> <result column="MESSAGE_NO" property="messageNo" jdbcType="VARCHAR" /> <result column="STATUS1_CODE" property="status1Code" jdbcType="VARCHAR" /> <result column="STATUS2_CODE" property="status2Code" jdbcType="VARCHAR" /> <result column="STATUS_DESCRIBE" property="statusDescribe" jdbcType="VARCHAR" /> <result column="CONSIGNMENT_5NO" property="consignment5no" jdbcType="VARCHAR" /> <result column="CONSIGNMENT_NO" property="consignmentNo" jdbcType="VARCHAR" /> <result column="STATUS_DATE" property="statusDate" jdbcType="VARCHAR" /> <result column="AP_ID" property="apId" jdbcType="VARCHAR" /> <result column="DOMAIN" property="domain" jdbcType="VARCHAR" /> <result column="CREATOR" property="creator" jdbcType="VARCHAR" /> <result column="CREATED_DATE" property="createdDate" jdbcType="VARCHAR" /> <result column="MODIFIER" property="modifier" jdbcType="VARCHAR" /> <result column="UPDATED_DATE" property="updatedDate" jdbcType="VARCHAR" /> <result column="PW_CITY" property="pwCity" jdbcType="VARCHAR" /> </resultMap>
<!--Excel匯出模板--> <select id = "queryExport" parameterType="com.hand.tms.orderstatus.dto.EdiIftsta" resultMap="BaseResultMap"> select distinct T.CONSIGNMENT_NO, T.STATUS1_CODE, T.STATUS2_CODE, T.OP_CITY, T.STATUS_DATE, T.OP_NAME, T.CREAT_DATE, decode(T.STATUS_DESCRIBE,'到達城市名稱',T.STATUS_DESCRIBE||'/'||T.OP_CITY,T.STATUS_DESCRIBE) FROM T_EDI_IFTSTA T where rownum = 1 <if test = "consignmentNo !=null"> and T.CONSIGNMENT_NO = #{consignmentNo ,jdbcType = VARCHAR} </if> <if test="selectStatus !=null"> and T.SELECT_STATUS = #{selectStatus,jdbcType=VARCHAR} </if> </select>
resultMap 用一個集合包裹了dto傳過來的值,column="OP_CITY"是資料庫欄位,property="opCity"是dto對應欄位,通過result Map做一個對映關係。而restType則是,查出來是什麼,如果和dto對應上,那麼就有這個物件,如果查出來沒有和dto對應,那麼則無效。