一、resultMap

  resultMap 元素是 MyBatis 中最重要最强大的元素. 该配置节点下如下子节点配置

  • id – 一个 ID 结果;标记结果作为 ID 可以帮助提高整体效能
  • constructor - 类在实例化时,用来注入结果到构造方法中id – 一个 ID 结果;标记结果作为 ID 可以帮助提高整体效能
    • idArg - ID 参数;标记结果作为 ID 可以帮助提高整体效能
    • arg - 注入到构造方法的一个普通结果
  • result – 注入到字段或 JavaBean 属性的普通结果
  • association – 一个复杂的类型关联;许多结果将包成这种类型
    • 嵌入结果映射 – 结果映射自身的关联,或者参考一个
  • collection – 复杂类型的集
    • 嵌入结果映射 – 结果映射自身的集,或者参考一个
  • discriminator – 使用结果值来决定使用哪个结果映射
    • case – 基于某些值的结果映射

      • 嵌入结果映射 – 这种情形结果也映射它本身,因此可以包含很多相 同的元素,或者它可以参照一个外部的结果映射。

  resultMap配置节点具有如下配置属性:

  id配置节点具有如下配置属性:

  剩余详细配置属性可参看文档:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#

二、通过mapper配置实现一对多关联查询

  1.首先我们建两张表,一张user表,一张campany表。(主要看 username 和 campany_name字段)

  

  2.创建实体类表:

  user:(字段应该和数据库字段一一对应,因为要实现一对多的联合查询,所以我们在user实体类中多加了Campany实体类,表示一个人呆过的公司记录,每个字段都要有set和get方法)

  

  campany:

  

  3.创建dao接口类:(此处我们只做查询,所以只定义一个方法接口)

1 public interface UserDao {
2     public List<UserEntity> getUserInfo(int id);
3 }

  4.创建dao接口对应的mapper.xml(namespace="dao.daoInterface.UserDao" 意为该mapper是UserDao的实现类,然后每个select,insert,update,delete标签节点的id都对应一个dao接口的方法,所以select的id应该和UserDao内要实现的方法一样)

 1 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 2     <mapper namespace="dao.daoInterface.UserDao">
 3     <resultMap id="UserMap" type="domain.UserEntity">
 4         <id property="id" column="uid" />
 5         <result property="username" column="username" />
 6         <result property="password" column="password"/>
 7         <result property="address" column="address"/>
 8         <result property="createTime" column="createTime"/>
 9         <result property="updateTime" column="updateTime"/>
10         <collection property="campanyEntity" resultMap="dao.daoInterface.CampanyDao.CampanyMap" />
11     </resultMap>
12
13     <!-- 可以将sql语句独立出来,然后引用 -->
14     <sql id="selectMap">
15         u.username, u.address ,c.campany_name
16     </sql>
17
18     <!-- 根据id查询用户 -->
19     <select id="getUserInfo" parameterType="int" resultMap="UserMap">
20             SELECT <include refid="selectMap"/>
21             FROM  user u left join campany c
22             ON u.username = c.username
23             WHERE id = #{id}
24             ORDER BY id ASC
25     </select>
26
27
28 </mapper>

  CampanyMapper.xml (这里面直接定义了一个map,该map可以被其他mapper文件引用,如上配置:<collection property="campanyEntity" resultMap="dao.daoInterface.CampanyDao.CampanyMap" />就引用了这个mapper的resultMap,引用规则位,该mapper的实现的接口包名dao.daoInterface.CampanyDao + resultMap的id名称)

1 <mapper namespace="dao.daoInterface.CampanyDao">
2     <resultMap id="CampanyMap" type="domain.CampanyEntity">
3         <id property="pid" column="pid"/>
4         <result property="username" column="username"/>
5         <result property="campanyName" column="campany_name"/>
6         <result property="money" column="money"/>
7     </resultMap>
8
9 </mapper>

 6.测试方法:

1      List<UserEntity> uList = userService.getUserInfo(1);
2         if(uList.size() > 0){
3             for(int i=0;i<uList.size();i++){
4                 System.out.println(uList.get(i).getUsername()+"\t"+uList.get(i).getCampanyEntity().getCampanyName());
5             }
6         }

  7.运行结果

这样,就实现了mapper配置实现一对多关联查询

转载于:https://www.cnblogs.com/caijh/p/7762679.html

mybatis的Mapper文件配置相关推荐

  1. Mybatis非mapper代理配置

    转: Mybatis非mapper代理配置 2017年04月26日 20:13:48 待长的小蘑菇 阅读数:870 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  2. Mybatis的mapper文件中涉及大于号小于号等特殊符号使用

    什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBati ...

  3. 【Mybatis】Mapper文件中sql不等于的写法

    [Mybatis]Mapper文件中sql不等于的写法 认识误区:在xml文件中,是 不能直接使用 < .>.& 的.因为会被语法检查而报错. 正确使用的两种方法 1. 第一种:转 ...

  4. Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。

    1. Mybatis工作流程 1.1 使用MySQL创建数据库girls并生成一个表boys,如下图. 1.2 创建该表对应的简单实体类Boys,如下图. 1.3 创建Dao接口以及和接口同名的map ...

  5. java 自动生成mybatis文件_如何自动生成Mybatis的Mapper文件详解

    前言 工作中使用mybatis时我们需要根据数据表字段创建pojo类.mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作很琐碎和重复,mybatis官方也发现了这个问题,因此给我 ...

  6. 【转】淮左白衣-解决maven管理SSM中mybatis的mapper文件扫描失败的问题

    本文链接: https://blog.csdn.net/youngyouth/article/details/86468910 好久没有写博客了,11月底来到公司实习,上个月写个小demo,趁此回顾下 ...

  7. mybatis的Mapper文件中的大于小于号,为什么要转成“lt ;”、“gt ;”,转义后的lt、gt又代表什么?

    为什么的Mapper文件中的"<".">" 要转成"&lt ;"."&gt ;" 问题分析 ...

  8. MyBatis框架的文件配置

    第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...

  9. Mybatis generator mapper文件重新生成不会覆盖原文件

    转载自http://www.voidcn.com/article/p-wbxpqlmy-bon.html 问题: 使用标题所述的generator,在生成xxxMapper.xml文件后,再生成一次, ...

最新文章

  1. android自定义tab下划线变大,Android开发之设置TabLayout下方下划线的宽度
  2. Linux系统中CPU使用率查询常用的5个命令
  3. ​ICML 2021 Long Oral | 顺序不可知的交叉熵函数
  4. Python的构造函数和析构函数,对象和类的不一样
  5. java数组个数无限_基于Java代码实现数字在数组中出现次数超过一半
  6. pytorch —— 池化、线性、激活函数层
  7. 再说共识性算法Raft
  8. 1. 变量和基本类型
  9. java类加载机制ClassLoad
  10. RCC_APB2Periph_ALL 哪儿里去了?
  11. linux下桌面快捷方式无法打开,亲测可用:Linux下桌面快捷方式创建实例
  12. 写给没时间理财的上班族
  13. html中不写form的后果,html之form
  14. 月过春枝似带烟的情境里
  15. Linux-4.20.8内核桥收包源码解析(一)----------sk_buff(详细)
  16. python3中多项式创建_Python3多项式
  17. canopen 报文格式_CANopen协议介绍
  18. 地铁线路项目需求简要分析
  19. vue-d2admin-axios异步请求登录,先对比一下Jquery ajax, Axios, Fetch区别
  20. 三坐标测量基础知识之日常维护和保养

热门文章

  1. 027_编写MapReduce的模板类Mapper、Reducer和Driver
  2. 8皇后问题--回溯法 (循环递归)
  3. 后台备份20080917
  4. RN TouchableOpacity点击事件不响应原因详解
  5. 【操作系统】—处理机调度的概念以及层次
  6. 零基础带你学习MySQL—流程控制函数(十七)
  7. 猫连接路由器路由下连七台电脑,为啥每台电脑手动设ip才有网?
  8. 手机电量剩一半就充比较好,还是快没电了再充比较好?为什么?
  9. 红米和小米手机有什么本质区别?
  10. 别墅客厅吊顶怎么做?有哪些注意事项?