mybatis 对象内包含对象如何查询(二)

这个方法比较坑,其实就是线根据主对象的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

相关文章
相关标签/搜索