文档章节

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

太黑_thj
 太黑_thj
发布于 2016/10/19 11:32
字数 376
阅读 114
收藏 0

这个方法比较坑,其实就是线根据主对象的id进行分组,然后拿主对象的ID进行关联对象查询,最坑的地方就是需要访问很多遍数据库,就是有N个主对象,就访问N+1次数据库

但是这个会比另外那个好理解一点

主对象

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方法省略
}

被关联对象

public class PortArea {
	private Long paId;

	private Long paPftId;

	private String paProvince;

	private String paCity;

	private String paArea;
//省略get和set方法
}

xml的resultMap配置

<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 对象内包含对象如何查询(一)这篇里面的那个方法来吧

© 著作权归作者所有

太黑_thj
粉丝 14
博文 125
码字总数 65378
作品 0
福州
程序员
私信 提问
Java面试----2018年MyBatis常见实用面试题整理

Java面试----2018年MyBatis常见实用面试题整理 1、什么是MyBatis? 答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存...

优惠券活动
2018/04/29
0
0
Mybatis3.4.x技术内幕(二十三):Mybatis面试问题集锦(大结局)

Mybatis技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用Mybatis的文章,所以,一些参数使用细节略掉了,我们的目...

祖大俊
2016/09/17
10.9K
34
源码分析 Mybatis 的 foreach 为什么会出现性能问题

背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一...

TSMYK
2018/12/16
0
0
mybatis 对象内包含对象如何查询(一)

mybatis在进行查询时,对象内的属性是另一种对象的数组 同样是用collection标签,先介绍第一种,也是醉实用的方法,每次只要访问一遍数据库就可以将结果全部出来并且帮你封装好 主对象 被关联...

太黑_thj
2016/10/19
33
0
Mybatis (四) 缓存机制

许多运用程序为了提高性能而增加缓存,特别是从数据库中获取的数据,如果缓存中没有,就到表中去查询,表查询的数据添加到缓存中去,下次查询是直接从缓存中读取,Mybatis 包含一个非常强大的...

什么都不懂的小石
2017/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部