在完成一个需求的时候,意外发现了resultSets
这一属性,以前都没有接触过,现在在学习经历写下了做一次总结与分享
除了resultType,resultMap做映射外,Mybatis还提供了开放的API来做映射的处理。
-
resultType
和resultMap
首先来说说MyBatis的resultType和resultMp,这个两个实际上就是对数据库中的列名和我们的Java实体中做了一对一的映射处理,使得数据库中的字段可以被赋值到我们的Java实体对象中,熟悉JDBC的童鞋肯定知道JDBC的结果集映射是多么烦,只不过这些繁琐的操作由Mybatis这个半自动ORM框架帮我们做了。 -
resultSets
这个属性其实更像我们的JDBC,使用JDBC定制地去操作实体的映射
话不多讲,先看代码
-- 表名做了处理
<select id="selectItemExportByQueryInfo" resultSets="financeInvoiceItemResultMapper">
SELECT bii.item_id id, bli.ln_std_name stdName, bli.id_card idCard, bli.std_no stdNo, bu.unvs_name unvsName, bli.grade, bup.pfsn_level pfsnLevel,
bup.pfsn_name pfsnName, bup.teach_method teachMethod, bli.std_stage stdStage, bli.inclusion_status inclusionStatus, bli.mobile, CONCAT(bia.province,bia.city, bia.district, bia.street, bia.receive_address) address,
oc.campus_name campusName, bii.item_code itemCode, bia.apply_time applyTime, bso.fee_amount feeAmount, bso.zm_scale zmScale, bso.coupon_scale couponScale,
(bso.pay_amount+bso.demurrage_scale) AS actualAmount, bii.status, IF(bsc.new_learn_id,1,0) AS hasChange, bii.export_status exportStatus
FROM
bms.m bii
LEFT JOIN bms.a bia ON bia.apply_id = bii.apply_id
LEFT JOIN bms.i bli ON bli.learn_id = bii.sub_learn_id
LEFT JOIN bms.u bu ON bu.unvs_id = bli.unvs_id
LEFT JOIN bms.p bup ON bup.pfsn_id = bli.pfsn_id
LEFT JOIN bms.s oc ON oc.campus_id = recruit_campus_id
LEFT JOIN pay.r bso ON bso.sub_order_no = bii.sub_order_no
LEFT JOIN bms.e bsc ON bsc.new_learn_id = bli