一、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接口类:(此处我们只做查询,所以只定义一个方法接口)

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

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

 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.daoInterface.UserDao">
<resultMap id="UserMap" type="domain.UserEntity">
<id property="id" column="uid" />
<result property="username" column="username" />
<result property="password" column="password"/>
<result property="address" column="address"/>
<result property="createTime" column="createTime"/>
<result property="updateTime" column="updateTime"/>
<collection property="campanyEntity" resultMap="dao.daoInterface.CampanyDao.CampanyMap" />
</resultMap> <!-- 可以将sql语句独立出来,然后引用 -->
<sql id="selectMap">
u.username, u.address ,c.campany_name
</sql> <!-- 根据id查询用户 -->
<select id="getUserInfo" parameterType="int" resultMap="UserMap">
SELECT <include refid="selectMap"/>
FROM user u left join campany c
ON u.username = c.username
WHERE id = #{id}
ORDER BY id ASC
</select> </mapper>

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

 <mapper namespace="dao.daoInterface.CampanyDao">
<resultMap id="CampanyMap" type="domain.CampanyEntity">
<id property="pid" column="pid"/>
<result property="username" column="username"/>
<result property="campanyName" column="campany_name"/>
<result property="money" column="money"/>
</resultMap> </mapper>

 6.测试方法:

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

  7.运行结果

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

mybatis的Mapper文件配置的更多相关文章

  1. Mybatis非mapper代理配置

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

  2. 逆向工程生成的mybatis中mapper文件。mapper接口,实例化成对象

    逆向工程生成的mybatis中mapper文件中,*mapper文件只是接口,而不是类文件.但是却可以通过spring的容器获得实例. 例如: //1.获得mapper代理对象,从spring容器获得 ...

  3. mybatis generator配置,Mybatis自动生成文件配置,Mybatis自动生成实体Bean配置

    mybatis generator配置,Mybatis自动生成文件配置,Mybatis自动生成实体Bean配置 ============================== 蕃薯耀 2018年3月14 ...

  4. 自动生成Mybatis的Mapper文件

    自动生成Mybatis的Mapper文件 工作中使用mybatis时我们需要根据数据表字段创建pojo类.mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作很琐碎和重复,myba ...

  5. MyBatis的Mapper文件的foreach标签详解

    MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据.如:使用foreach来拼接in子语句. 在学习MyBatis M ...

  6. Spring配置扫描mybatis的mapper文件注意:

    一般会将不业务的mapper文件放到不同的包中: spring配置扫描就需要配置下面的方式(两个*): <!-- mybatis文件配置,扫描所有mapper文件 --> <bean ...

  7. mybatis写mapper文件注意事项(转)

    原文链接:http://wksandy.iteye.com/blog/1443133 xml中某些特殊符号作为内容信息时需要做转义,否则会对文件的合法性和使用造成影响 < < > & ...

  8. 【坑】解决maven管理SSM中mybatis的mapper文件扫描失败的问题

    文章目录 前言 改进方式来替换原始的使用方式 后记 好久没有写博客了,11月底来到公司实习,上个月写个小demo,趁此回顾下SSM,今天将最近的积累记录下: 前言 在学习 mybatis 的时候,都知 ...

  9. mybatis 自动生成文件配置

    maven 依赖配置: <!-- sql server --><dependency> <groupId>com.microsoft.sqlserver</g ...

随机推荐

  1. [bzoj4552][Tjoi2016&Heoi2016]排序-二分+线段树

    Brief Description DZY有一个数列a[1..n],它是1∼n这n个正整数的一个排列. 现在他想支持两种操作: 0, l, r: 将a[l..r]原地升序排序. 1, l, r: 将a ...

  2. CEF小白人系列1-认识CEF

    手头上有个项目需要做浏览器的相关功能,评估了几个嵌入式方案最后选定CEF作为开发基础. 在入坑新技术的时候第一选择是去官网学习,这是一个非常好的习惯. CEF官网(请科学上网) https://bit ...

  3. 自动化测试工具selenium的使用

    1.自动化测试的前提

  4. DB2物化视图——MQT 物化查询表的正确使用(materialized query tables)

    我们今天主要向大家讲述的是DB2物化视图——MQT 物化查询表使用,以下就是对DB2物化视图之MQT物化查询表的正确使用的主要内容的详细描述,望大家在浏览之后会对其有更深的了解. MQT 的定义基于查 ...

  5. jQuery(function(){...})与(function($){...})(jQuery)的“兄弟”情结

    记得那时在学习写基于jQuery的插件时,了解到(function($){...})(jQuery)的代码结构,一开始还没发觉,后来百度了解它的语意时,从搜索结果中发现了jQuery(function ...

  6. selenium+chrome抓取淘宝搜索抓娃娃关键页面

    最近迷上了抓娃娃,去富国海底世界抓了不少,完全停不下来,还下各种抓娃娃的软件,梦想着有一天买个抓娃娃的机器存家里~.~ 今天顺便抓了下马爸爸家抓娃娃机器的信息,晚辈只是觉得翻得手酸,本来100页的数据 ...

  7. 机器学习策略——DeepLearning.AI课程总结

    一.什么是ML策略 假设你正在训练一个分类器,你的系统已经达到了90%准确率,但是对于你的应用程序来说还不够好,此时你有很多的想法去继续改善你的系统: 收集更多训练数据 训练集的多样性不够,收集更多的 ...

  8. hihoCoder 1493 : 歌德巴赫猜想 素数筛法

    题意:哥德巴赫猜想认为"每一个大于2的偶数,都能表示成两个质数之和".给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?如果有多组解,输出P最小的一 ...

  9. init启动进程

    init启动进程需要读取()配置文件 1,启动init进程的配置文件是/etc/inittab 2,/etc/sysvinit是系统初始化用的   /sbin/init在核心完整的加载后,开始运行系统 ...

  10. 转:客户端session与服务端session

    会话(Session)跟踪是Web程序中常用的技术,用来 跟踪用户的整个会话 .常用的会话跟踪技术是Cookie与Session. Cookie通过在客户端记录信息确定用户身份 , Session通过 ...