4.1 一对一

4.1.1 表对应关系,

一个订单对应一个用户

4.1.2 实体对应关系

  1. public class Order {
  2. private int id;
  3. private Date ordertime;
  4. private double total;
  5. //代表当前订单属于哪个用户
  6. private User user; }
  7. public class User {
  8. private int id;
  9. private String username;
  10. private String password;
  11. private Date birthday; }

4.1.3 配置 OrderMapper.xml文件

  1. <mapper namespace="com.lagou.mapper.OrderMapper">
  2. <resultMap id="orderMap" type="com.lagou.domain.Order">
  3. <result column="uid" property="user.id"></result>
  4. <result column="username" property="user.username"></result>
  5. <result column="password" property="user.password"></result>
  6. <result column="birthday" property="user.birthday"></result>
  7. </resultMap>
  8. <select id="findAll" resultMap="orderMap">
  9. select * from orders o,user u where o.uid=u.id
  10. </select>
  11. </mapper>
  12. #或者还可以这样配置
  13. <resultMap id="orderMap" type="com.lagou.domain.Order">
  14. <result property="id" column="id"></result>
  15. <result property="ordertime" column="ordertime"></result>
  16. <result property="total" column="total"></result>
  17. <association property="user" javaType="com.lagou.domain.User">
  18. <result column="uid" property="id"></result>
  19. <result column="username" property="username"></result>
  20. <result column="password" property="password"></result>
  21. <result column="birthday" property="birthday"></result>
  22. </association>
  23. </resultMap>

4.2 一对多

4.2.1 表对应关系


查询语句可以写为

select *,o.id oid from user u left join orders o on u.id=o.uid;

4.2.2 实体类关系

  1. public class Order {
  2. private int id;
  3. private Date ordertime;
  4. private double total;
  5. //当前订单属于哪个用户
  6. private User user;
  7. }
  8. public class User {
  9. private int id;
  10. private String username;
  11. private String password;
  12. private Date birthday;
  13. //当前用户的订单列表
  14. private List<Order> orderList;
  15. }

4.2.3 配置UserMapper.xml

  1. <mapper namespace="com.lagou.mapper.UserMapper">
  2. <resultMap id="userMap" type="com.lagou.domain.User">
  3. <result column="id" property="id"></result>
  4. <result column="username" property="username"></result>
  5. <result column="password" property="password"></result>
  6. <result column="birthday" property="birthday"></result>
  7. <collection property="orderList" ofType="com.lagou.domain.Order">
  8. <result column="oid" property="id"></result>
  9. <result column="ordertime" property="ordertime"></result>
  10. <result column="total" property="total"></result>
  11. </collection>
  12. </resultMap>
  13. <select id="findAll" resultMap="userMap">
  14. select *,o.id oid from user u left join orders o on u.id=o.uid
  15. </select>
  16. </mapper>

4.3 多对多

4.3.1 表对应关系


对应SQL语句

select u.,r.,r.id rid from user u left join user_role ur on u.id=ur.user_id

inner join role r on ur.role_id=r.id;

4.3.2 实体类对应关系

  1. public class User {
  2. private int id;
  3. private String username;
  4. private String password;
  5. private Date birthday;
  6. //当前用户具备哪些角色
  7. private List<Role> roleList;
  8. }
  9. public class Role {
  10. private int id;
  11. private String rolename;
  12. }

4.3.3 配置UserMapper.xml文件

  1. <resultMap id="userRoleMap" type="com.lagou.domain.User">
  2. <result column="id" property="id"></result>
  3. <result column="username" property="username"></result>
  4. <result column="password" property="password"></result>
  5. <result column="birthday" property="birthday"></result>
  6. <collection property="roleList" ofType="com.lagou.domain.Role">
  7. <result column="rid" property="id"></result>
  8. <result column="rolename" property="rolename"></result>
  9. </collection>
  10. </resultMap>
  11. <select id="findAllUserAndRole" resultMap="userRoleMap">
  12. select u.*,r.*,r.id rid
  13. from user u
  14. left join user_role ur on u.id=ur.user_id
  15. inner join role r on ur.role_id=r.id
  16. </select>
  17.  
  18. 原文:https://www.cnblogs.com/benjaming0321/p/12546839.html

Mybatis(三)Mybatis映射开发的更多相关文章

  1. 框架应用:Mybatis (三) - 关系映射

    你有一张你自己的学生证?(一对一) 你这一年级有多少个学生?(一对多) 班上学生各选了什么课?(多对多) 两张表以上的操作都需要联立多张表,而用SQL语句可以直接联立两张表,用工程语言则需要手动完成这 ...

  2. (转)MyBatis框架的学习(三)——Dao层开发方法

    http://blog.csdn.net/yerenyuan_pku/article/details/71700957 使用MyBatis开发Dao层,通常有两个方法,即原始Dao开发方法和Mappe ...

  3. 5.Mybatis的输出映射(就是对查询的结果集的映射)

    Mybatis的输出映射,也就是对查询结果集的一个映射,主要有两种: 1.resultType(不需要配置,可以直接用) 一般是实体类 基本类型也可以 2.resultMap(需要配置resultMa ...

  4. 【转】Mybatis学习---MyBatis知识、原始Dao开发和mapper代理开发

    [原文]https://www.toutiao.com/i6594610137560777223/ 一.什么是MyBatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及 ...

  5. 【转载】Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    原地址:http://blog.csdn.net/wp1603710463/article/details/48247817#t16 Maven+druid+MyBatis+spring+Oracle ...

  6. mybatis一对一关联关系映射

    mybatis一对一关联关系映射 在关联关系中,有一对一,一对多,多对多三种关联关系. 一对一关系:在操作上,任意一方引入对方的主键作为外键. 一对多关系:在"多"的一方添加&qu ...

  7. Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化

    知识点梳理 课堂讲义 一.Mybatis注解开发单表操作 *** 1.1 MyBatis的常用注解 之前我们在Mapper映射文件中编写的sql语句已经各种配置,其实是比较麻烦的 而这几年来注解开发越 ...

  8. Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件

    封面:洛小汐 作者:潘潘 若不是生活所迫,谁愿意背负一身才华. 前言 上节我们介绍了 < Mybatis系列全解(四):全网最全!Mybatis配置文件 XML 全貌详解 >,内容很详细( ...

  9. spring与mybatis三种整合方法

    spring与mybatis三种整合方法 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接 http://code.googl ...

随机推荐

  1. Windows Server 2008 配置 PHP 环境

    在配置PHP环境之前要先配置好IIS. 传送门-> Win2008 Server下配置安装IIS 如果IIS是以默认的配置安装,则还需要安装CGI. 在这里勾选CGI,然后安装. 创建一个网站 ...

  2. sitemesh 使用方法

    一.简介 SiteMesh是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的. 它能通过创建一个包装对象,也就是装饰来包裹的对象.尽管它是由Java语言来实现的 ...

  3. BUG漏测的原因总结,以及如何处理

    一.漏测的概率 漏测,是指软件产品的缺陷没有在测试过程中被发现,而是在版本发布之后,用户在使用过程中发现存在的缺陷. 二.预防漏测的意义 我们都知道,缺陷越早被发现,发现和解决缺陷所花的成本就越小,如 ...

  4. SpringBoot 处理 POST Json 传参枚举

    在 Spring 框架中对枚举类型的序列化/反序列化是有限制的. 假设如下面这样在某些情况下就不能正常工作: 123456789 public enum PayChannelEnum implemen ...

  5. Elasticsearch,Filebeat,Kibana部署,添加图表及elastalert报警

    服务端安装 Elasticsearch和Kibana(需要安装openjdk1.8以上) 安装方法:https://www.elastic.co以Ubuntu为例: wget -qO - https: ...

  6. Vue1.0用法详解

    Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 ...

  7. 基于webhook方案的Git自动部署方案

    之前已经用Git实现了自己博客的提交自动部署,并自动提交到GitHub和coding以备不时之需.平时项目代码都托管在Coding或者GitHub上,也已经用上了coding提供的webhook功能, ...

  8. Js对于数组去重提高效率一些心得

    最近在找工作,好几次面试都问过数组去重的问题.虽然问的都不一样,但是核心思想是没有变的. 第一种是比较常规的方法 思路: 构建一个新的数组存放结果 for循环中每次从原数组中取出一个元素,用这个元素循 ...

  9. dns原理介绍及实践问题总结

    1 问题引入: a) 域名劫持: dns过程中某个环节被攻击/篡改,导致dns结果为劫持者的服务器.例如竞争对手将你方的app下载地址篡改为他方的app下载地址. b) 对现网用户进行监控时,发现个别 ...

  10. 原生js实现在表格用鼠标框选并有反选功能

    今天应同学要求,需要写一个像Excel那样框选高亮,并且实现框选区域实现反选功能.要我用原生js写,由于没什么经验翻阅了很多资料,第一次写文章希望各位指出不足!! 上来先建表 <div clas ...