这个方法比较坑,其实就是线根据主对象的id进行分组,而后拿主对象的ID进行关联对象查询,最坑的地方就是须要访问不少遍数据库,就是有N个主对象,就访问N+1次数据库java
可是这个会比另外那个好理解一点数据库
主对象mybatis
public class PortFeeTemplate { private List<PortArea> pas;// 配送区域详情 private Long pftId; private String pftName; private Integer pftBaseNum; private Integer pftFee; private Integer pftContinue; private Integer pftContinueFee; //get和set方法省略 }
被关联对象.net
public class PortArea { private Long paId; private Long paPftId; private String paProvince; private String paCity; private String paArea; //省略get和set方法 }
xml的resultMap配置code
<resultMap id="BaseResultMap" type="com.impression.model.PortFeeTemplate"> <id column="pft_id" property="pftId" jdbcType="BIGINT" /> <result column="pft_name" property="pftName" jdbcType="VARCHAR" /> <result column="pft_base_num" property="pftBaseNum" jdbcType="INTEGER" /> <result column="pft_fee" property="pftFee" jdbcType="INTEGER" /> <result column="pft_continue" property="pftContinue" jdbcType="INTEGER" /> <result column="pft_continue_fee" property="pftContinueFee" jdbcType="INTEGER" /> <!--看到没,其实这边就是根据每一个住对象的ID去查找关联对象而后拼接进来--> <collection property="pas" ofType="com.impression.model.PortArea" select="queryPasByPftIdForBaseResultMap" column="{pftId2=pft_id}" /> </resultMap> <resultMap id="pasResult" type="com.impression.model.PortArea"> <id column="pa_id" property="paId" jdbcType="BIGINT" /> <result column="pa_pft_id" property="paPftId" jdbcType="BIGINT" /> <result column="pa_province" property="paProvince" jdbcType="VARCHAR" /> <result column="pa_city" property="paCity" jdbcType="VARCHAR" /> <result column="pa_area" property="paArea" jdbcType="VARCHAR" /> </resultMap> <!--这个方法就是留着供关联查询用的--> <select id="queryPasByPftIdForBaseResultMap" resultMap="pasResult"> select * from im_port_area where pa_pft_id = ${pftId2} </select>
其实这个方法也挺恶心的,你们仍是尽可能用 mybatis 对象内包含对象如何查询(一)这篇里面的那个方法来吧xml