MyBatis高级association、collection 的使用
    <resultMap type="com.mybatis.bean.Customer" id="BaseResultMap">
        <id column="cust_id" property="custId"/>
        <result column="cust_name" property="custName"/>
        <result column="cust_age" property="custAge"/>  
        <collection property="orderSet" ofType="com.mybatis.bean.Order" column="cust_id"
     select="com.mybatis.mapper.OrderMapper.getOrderByCustId">          
        </collection>   
    </resultMap>

    <select id="getCustomerByCustId" resultMap="BaseResultMap">
        select cust_id,cust_name,cust_age
         from tbl_cust
        where cust_id=#{custId}
    </select>

    <select id="getCustomerAndOrederByCustId" resultMap="BaseResultMap">
        select cust_id,cust_name,cust_age
        from tbl_cust
        where cust_id=#{custId}
    </select>

在执行getCustomerByCustId方法时不需要关联查询,不执行resultMap中的collection,在执行getCustomerAndOrederByCustId方法是需要执行关联查询,我知道在getCustomerByCustId方法的查询语句中不查询cust_id可以解决这个问题,但是现在的需求是我要放回的结果中包含cust_id的,不知道这个该怎么处理?求大神指点迷津。。。

5个回答

建议你单独定义两个resultMap,其中一个有collection映射,一个没有colleaction映射,查询的时候分别映射不同的resultMap就行了。

u013154152
Rains_ 回复思宇少卿: 不执行直接用懒加载就行了,干嘛那么麻烦
一年多之前 回复
weixin_38845812
思宇少卿 定义两个resultMap我也想到,我是想定义一个有没有办法解决这个需求,谢谢你的回答
一年多之前 回复

分开定义查询返回值是多少,再看一下它传过的我映射的结果,

weixin_38845812
思宇少卿 这篇博客我我早看过,谢谢你的回答,不过还是没有解决我的需求
一年多之前 回复

这种不能放到list里面,但是他支持数组,所以list.toArray()就可以解决

"我知道在getCustomerByCustId方法的查询语句中不查询cust_id可以解决这个问题",
查不查询一是样的,同样的列可以在一个查询中批定多次,你这里声明两次就行了,一个就查询列值映射到cust_id,另一个一对多映射到orders.
如果使用注释更方便:
public class Customer extends BaseEntity{
private Integer cust_id;//报表代码
private String cust_name;//数据表名称
private Integer cust_age; //序号
private List orders;//分类实体
public Customer() {
super();
}
public Integer getCust_id() {
return cust_id;
}
public void setCust_id(Integer cust_id) {
this.cust_id = cust_id;
}

@Select("select * from Order where cust_id=#{cust_id}")
 public List<Order> getOrders(int id);

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mybatis 一对一与一对多collection和association的使用
表关系中,一对一,一对多的关系查询, 和查询树结构中, 往往要设计到collection和association的使用.今天做了一个查询订单的查询: 查询订单, 并查询订单项, 和每一条的订单项中查出该订单项对应的商店对象和商品对象; 这就典型的一对多的关系要用collection, 多的一方为订单项, 订单项中又和商店和商品的对象是一对一的关系要用 association; 下面是mapper...
【Mybatis】深入浅出Mybatis(十三)——使用association和collection实现关联查询
一、前言      前面的时候,小编向大家介绍了Mybatis的使用,总结来说,Mybatis注重的是写sql语句。针对单表 的增删改查还是比较好写的,直接写出SQL语句可以了,但是如果遇到了多表的关联查询,可能就会复杂了点。下面小编就向大家介绍如何进行多表的复杂查询 。二、关联关系为一对一查询方法一 使用resultType      思路:创建一个大实体Model,这个Model是和关联查询的f
Mybatis 中的【子查寻】及 association 和 collection 的应用
&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;!-- association 子查寻 所属公司 --&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;select id=&amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;selectCompanyById&amp;amp;amp;amp;amp;amp;a
mybatis 配置文件中,collection 和 association 的对应关系
mybatis 配置文件中,collection 和 association 的对应关系  如下图所示:    
Mybatis查询之Association和Collection的区别和使用时机方式(代码讲解)
如存在问题 或有更好建议 请联系作者QQ:2940500 本文使用商城系统订单模块讲解 需要注意的地方使用红字指出 =========================正-文-分-割-线============================ 2019-03-04 补充: 在一对多的情况下 返回的数据是带有重复的 但是封装的时候不会有重复数据 比如 一个订单 拥有多个子订单 我们根...
mybatis中mapper文件resultMap中collection和association的使用
mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
mybatis高级结果映射collection
现状描述: 超市销售商品时候,生成一个订单,一个订单中可能销售了一件或多件商品,查询销售数据的时候,我们使用嵌套查询来为订单加载商品销售明细(ERPSaleDetail类)。 具体使用: 一、在订单实体中加入商品销售明细属性: public class ERPSaleData  { private String orderId; 。。。。。 private List erpSaleD
Mybatis高级-resultMap之collection聚集
mybatis 一对多collection的使用 在mybatis如何进行一对多的多表查询呢?这里用一个简单的例子说明
mybatis一对一关系 association的使用
废话不多说直接上代码 接口文件EmployeeMapperPlus.java public interface EmployeeMapperPlus { /** * 根据id查询Employee对象,使用resultMap * @param id * @return */ public Employee getEmpById(I
MyBatis 中使用 Association 嵌套查询
当使用 MyBatis 进行查询的时候如果一个 JavaBean 中包含另一个 JavaBean 或者 Collection 时,可以通过 MyBatis 的嵌套查询来获取需要的结果; 以下以用户登录时的用户、角色和菜单直接的关系为例使用嵌套查询 JavaBean UserModel public class UserModel { private Integer id; pr
关联映射中collection与association区别
association:用于将关联查询信息映射到单个对象中。                    标签注意使用javaType指定关联映射的对象类型  collection:用于将关联查询信息映射到集合对象中。                     标签注意使用ofType指定关联映射的List中pojo的类型。 例如: -->
Mybatis 只返回一条数据的解决方案 之association、collection
Mybatis中有一个结果集映射map-&amp;gt;resultMapresultMap中有association和collectionassociation是一对一或者多对一,collection是一对多为了方便理解,我用了两个类测试,一个是StudentC,一个ClassS:学生类StudentC:public class StudentC { private Long sid; ...
mybatis 学习记录(4.2)—— 级联查询(有 association 和 collection)
版权声明:版权声明:尊重他人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/725996811. 项目介绍本文主要介绍在级联操作中 association,collection 的使用。如果对最基本的级联操作还不是很了解的话,可以参考这篇文章。mybatis 学习记录(4.1)—— 级联操作(无 association 和 co
Mybatis的分段查询association和collection(对象属性是另一个对象)
联合查询 :级联属性封装结果集 就是 对象中有个属性也是对象 方法1:传统方法 &amp;amp;lt;mapper namespace=&amp;quot;dao.TeacherMapperPlus&amp;quot;&amp;amp;gt; &amp;amp;lt;resultMap type=&amp;quot;entity.Teacher&amp;quot; id=&amp;quot;Teacher&amp;quot;&amp;amp;gt; &amp;amp;lt;id c
MyBatis的association示例以及association的两种形式
一、association示例 假设每个学生都有一名指导老师,本示例的任务就是查询出学生的详细信息,这就包括学生的指导教师的信息。为此,应先增加一个教师的实体类。 package com.abc.domain; public class Teacher{ private int id; private String name; //姓名 private String gender;//性
mybatis 学习记录(4.1)—— 级联查询(无 association 和 collection)
版权声明:版权声明:尊重他人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/725996431. 先前介绍本文是对 mybatis 级联操作最简单操作的介绍,如果想要了解有关 association 和 collection 内容的话,可以移步到这篇文章进行阅读。 mybatis 学习记录(4.2)—— 级联操作(有 asso
Mybatis中一对多(collection)和一对一(association)的组合查询用法
Collection collection : 一个复杂的类型关联,许多结果将映射为这种类型 property : 这是关联的 JavaBean 中的属性名, 在 RoleModel 中对应 private List&amp;amp;amp;amp;amp;lt;MenuModel&amp;amp;amp;amp;amp;gt; menus; javaType : property 属性对应的集合类型 ofType : property 集合中的泛型,即定义时泛型所表示的具体...
mybatis association 懒加载实现原理
前言mybatis的association 标签可以设置关联对象,加载方式;如下的user关联dept,加载方式fetchType=”eager” <resultMap id="BaseResultMap" type="testmaven.entity.User"> <id column="id" jdbcType="INTEGER" property="id" /> <result
mybatis association 一对一关联查询
学生表设计,下面是插入用于调试的数据 班级表设计,下面是插入用于调试的数据 1.一对一嵌套查询 student表实体类(省略get set ) private Integer stuId; private String stuName; private Integer stuAge; private Class cla; //班级属性 class表实体类(省略get set...
mybatis collection 高级映射出错问题解决
问题:mybatis collection高级映射(不使用子查询,避免N+1),mapper配置如下: resultMap id="OmsSkuPoMap" type="com.trymore.pifa.domain.po.OmsSkuPo" >     id column="sku_id" property="skuId" jdbcType="VARCHAR" />
mybatis association 映射:同文件中的使用
selectUserRoles"> select * from po_user where sUserID = #{sUserID} selectUserRoles" parameterType = "String" resultType="String"> SELECT  sRoleName  FROM po_userrole  WHERE sUserID = #
MyBatis使用association进行两表查询
应用场景 执行多表查询时,返回的对象关联到另一个对象,此时需要使用resultMap。 比如班级和学生表是一个一对多的关系。如果查询某一个学生信息(对象)时同时要求查询出对应的班级信息(对象)。 代码实现 项目目录: 数据库: stu(学生表) class(班级表) XueSheng.java: package vo; import java.io.Serializable; impor...
MyBatis中使用Collection嵌套查询
当使用 MyBatis 进行查询的时候如果一个 JavaBean 中包含另一个 JavaBean 或者 Collection 时,可以通过 MyBatis 的嵌套查询来获取需要的结果; 以下以用户登录时的角色和菜单直接的关系为例使用嵌套查询 JavaBean RoleModel public class RoleModel { private Integer id; private...
mybatis使用collection实现嵌套查询
在写mybatis查询语句的时候,遇到需要写一个查询的接口,实现查出这个集团的所有分公司的所有部门的所有员工。显示分公司的id与名称,各个分公司部门的id与名称,各个部门人的id与姓名。最后显示在网页上的json的数据结构就是{ "data": {[ {"pkid": 1, "name": "演示公司","depts": []} {"pkid": 3,"name": "通
mybatis中collection标签的使用
看图说话 解释: 当一个查询里有对象的时候,实体映射可以用Collection标签,属性值 property实体类里的对象名,column数据库字段,ofType指实体类中select 标签返回类型,一般为map. javaType指实体类中的对象类型,select查询语句,查询的是文本中select标签,一般为java.util.List &lt;resultMap id="FollwerRe...
mybatis一对多关系 collection的使用
实体类Department.java public class Department { private Integer id; private String departmentName; private List emps; }DepartmentMapper.java文件 package com.du.mybatis.dao; import
mybatis中collection的使用(三级联动)
mybatis中association和collection的column传入多个参数值 项目中在使用association和collection实现一对一和一对多关系时需要对关系中结果集进行筛选,如果使用懒加载模式,即联合使用select标签时,主sql和关系映射里的sql是分开的,查询参数传递成为问题。 mybatis文档: property description colum...
MyBatis中collection标签的使用
MyBatis中&amp;amp;amp;lt;collection&amp;amp;amp;gt;标签的使用 使用&amp;amp;amp;lt;collection&amp;amp;amp;gt;进行一对多的查询 下面的栗子要输出每个班级和其学生列表 表结构和数据: class表: +------+ | c_id | +------+ | 1 | | 2 | | 3 | +------+ student表: +------+--------+-------+ | s_...
MyBatis 中使用 Collection 嵌套查询
当使用 MyBatis 进行查询的时候如果一个 JavaBean 中包含另一个 JavaBean 或者 Collection 时,可以通过 MyBatis 的嵌套查询来获取需要的结果; 以下以用户登录时的角色和菜单直接的关系为例使用嵌套查询 JavaBean RoleModel public class RoleModel { private Integer id; priva
MyBatis使用 resultMap的association 标签实现懒加载
首先 , 做好初始化工作 ,  建立三张表 , sys_user ,sys_role ,sys_user_role , 建表语句如下 CREATE TABLE `sys_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', `user_name` varchar(64) DEFAULT NULL COMMENT '用户...
mybatis 中使用association返回一条数据
xml文件内容: id="OrderAndOtherResultMap" type="com.zyt.cxfq.model.entity.OrderAndAddressAndBrand" > property="id" column="id"> property="userorder" javaType="com.zyt.cxfq.model.TUserorder" resultMa
mybatis中一对一关系association标签的使用
association字面翻译为联合之意,Java项目开发中常遇到一对一关系的结果,例如,一个商品对应一个生产商,在查询结果中如果某两个对象是一对一关系一般使用association标签,用法有两种: 1,嵌套的resultMap,一次性查询出所有结果的相关字段,结果把所有字段映射到不同的对象的类变量中; &amp;lt;resultMap id=&quot;map01&quot; type=&quot;Model01&quot;&amp;gt;...
MyBatis的association示例——MyBatis学习笔记之三
      前两篇博文介绍的都是单表映射,而实际上很多时候我们需要用到较复杂的映射。今天学会的association的用法,就是一例,现写出来和大家分享(为简洁起见,ant工程中各文件、目录的布局,以及其它与前面的例子重复的内容,将不再赘述。以后博文亦将如此)。       假设每个学生都有一名指导老师,本示例的任务就是查询出学生的详细信息,这就包括学生的指导教师的信息。为此...
MyBatis association的两种形式——MyBatis学习笔记之四
一、嵌套的resultMap       这种方法本质上就是上篇博文介绍的方法,只是把教师实体映射从association元素中提取出来,用一个resultMap元素表示。然后association元素再引用这个resultMap元素。修改上篇博文示例的StudentMapper.xml如下: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;...
【Mybatis】association解決一对一关联查询
在上一篇中我们用级联属性的方式把数据查出来封装到Employee中,还有另一种方式实现数据的封装。接下来小编将介绍association标签的相关知识,包括嵌套查询和分段查询两种方式。首先请参照上一篇中步骤1,2,3 , 4,此处从第5步开始一、嵌套查询5.新增EmployeeMapper.xml文件,配置信息如下 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;...
mybatis使用之association(二)
续(一):https://www.jianshu.com/p/3bced51ee642 建立一个简单的表 DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `empno` int(10) NOT NULL AUTO_INCREMENT, `ename` varchar(30) NOT NULL, `deptno` int(10) DEFA...
mybatis —— <association>关联的结果查询
接下来的文章中,关于Mybatis的示例,全部来自于Mybatis代码中的单元测试代码,通过这些代码能够学习Mybatis中很有用的知识,这些内容在doc文档中可能只是简单提到了,或者有一些文字说明,通过这些单元测试能更直观的了解如何在Mybatis使用这些内容。 这一节内容为Association关联的结果查询,就是在查询出结果后,根据查询的列和resultMap定义的对应关系,来创建
Mybatis(6):返回结果封装ResulMap的高级属性--association标签
Mybatis(6):返回结果封装ResulMap的高级属性--association标签
关于ibatis3.03的association和collection的例子 急求
谁有关于这两个标签在 多对一 一对多时候的例子 谢谢了 给我发一份完整的吧 我调了两天了 都没有调出来rn前提是:一般的关联可以 但是如果按照官方的想消除N+1次查询而用的时候这个时候就怎么也不对了 rn谢谢...
mybatis 一对一关系取值association
mybatis 一对一关系取值association mybatis支持一对一取值和一对多取值。简单的来讲就是mybatis实现的如下的功能。 我有一个user表,还有一个duty表,其中每一个人只能属于一个部门,这样每个人和部门就是一对一的关系。这个时候表是这样设计的: user表中的字段DUTYID对应的是duty表中的id字段。那么如果正常是用关联进行查询的话是这样的。
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法