mybatis映射
mybatis是基于结果集映射的,刚开始学习时不明白为什么映射文件中没有配置对应的表,原因是mybatis要手写SQL.
而sql执行后的结果封装到resultMap。
<resultMap type="web.vo.OutProductVO" id="outProductRM">
<result property="customName" column="CUSTOM_NAME"/>
<result property="contractNo" column="CONTRACT_NO"/>
<result property="productNo" column="PRODUCT_NO"/>
<result property="cnumber" column="CNUMBER"/>
<result property="factoryName" column="FACTORY_NAME"/>
<result property="deliveryPeriod" column="DELIVERY_PERIOD"/>
<result property="shipTime" column="SHIP_TIME"/>
<result property="tradeTerms" column="TRADE_TERMS"/>
</resultMap>
<!-- 按船期查询某个月的合同统计 -->
<select id="find" parameterType="string" resultMap="outProductRM">
select
c.custom_name,c.contract_no,to_char(c.delivery_period,'yyyy-MM-dd') as delivery_period,to_char(c.ship_time,'yyyy-MM-dd') as ship_time,c.trade_terms,
cp.product_no,concat(cp.cnumber,cp.packing_unit) as cnumber,cp.factory_name
from
(select contract_id,custom_name,contract_no,delivery_period,ship_time,trade_terms from contract_c) c
left join
(select contract_id,product_no,cnumber,packing_unit,factory_name from contract_product_c) cp
on c.contract_id=cp.contract_id
where to_char(c.ship_time,'yyyy-MM') = #{inputDate}
</select>
</mapper>
它是比较灵活的,需要查什么字段都可以。
但是相对于hibernate基于对象的映射 就会查出所有的字段在内存中。