association关键字:

关联表数据在这个mxl中写

resultmap:

表联查映射

多对一关系

public class Student {private Integer sid;private String sname;private String address;private Integer cid;private Cls cls;
//这的表的关系是多对一,因为一个Student对应的是一个Cls对象
}
<mapper namespace="com.dao.StudentMap"><!--这里要声明接口,如果不说明路径就无法找到实现接口--><resultMap id="StuAndCls" type="com.dao.Student"><!--映射文件名,返回的类型--><result column="sid" property="sid"/><!--数据库的列,对应的对象属性--><result column="sname" property="sname"/><result column="address" property="address"/><result column="cid" property="cid"/><association property="cls" javaType="com.dao.Cls"><!--关联表的数据,将com.dao.Cls对象封装道Student中的cls属性中--><result column="cid" property="cid"/><!--说明要嵌套查询的对象所对应的数据--><result column="cname" property="cname"/></association></resultMap><select id="selseAll" resultMap="StuAndCls">
--       id对应着的是接口的实现方法
--       resultMap查询后返回将数据封装道StuAndCls映射文件中的属性中,再将对象返回出来SELECT s.*,c.cname  FROM student s INNER JOIN cls c ON s.cid=c.cid</select>
</mapper>

一对多关联关系

collection:集合查询
public class Cls {private Integer cid;private String cname;private List<Student> studentList;//这里之所以要用集合是因为我在联查Cls是希望他将关联的Student对象全部拿出来//也是因为一个cls表中有多个student对象
}
<mapper namespace="com.dao.Clsmap"><!--对应的实现接口路径--><resultMap id="ClsAndStu" type="com.dao.Cls"><id column="cid" property="cid"/><result column="cname" property="cname"/><collection property="studentList" ofType="com.dao.Student"><!--collection:集合对象--><!--将com.dao.Student类型封装到cls对象中的studentList属性当中--><!--集合所返回的类型要中ofType声明--><!--下面就是student表所对应的属性--><id column="sid" property="sid"/><result column="sid" property="sid"/><result column="sname" property="sname"/><result column="address" property="address"/><result column="cid" property="cid"/></collection></resultMap><select id="selectClsStu" resultMap="ClsAndStu">SELECT c.*,s.sid,s.address,s.sname FROM cls cINNER JOIN student s ON c.cid=s.cid</select>
</mapper>

懒加载:

运用的是动态代理模式:

1.首先继承你需要的类

2.在内存中生成继承对象

3.重写继承对象中的封装方法

在你的封装方法中询问是否查询过,没查询在查询将对象返回出来

优点是你要用我才给你差不用我就不查

缺点查询效率没有联查效率高

 public List<Student> selseAll1(int id);
   <select id="selseAll1" resultType="com.dao.Student">select *from student where cid=#{param1}
--  查询student按住键查询</select></select><resultMap id="ClsAndStu1" type="com.dao.Cls"><id column="cid" property="cid"/><result column="cname" property="cname"/><collection property="studentList" column="cid" fetchType="lazy" select="com.dao.StudentMap.selseAll1"><!--collection因为有多个对象所以用到集合--><!--因为是实现接口是按主键查询所以需要传入你要查询的id--><!--将cls对象所对应的cid传给com.dao.StudentMap.selseAll1实现类所对应的方法--><!--fetchType声明时懒查询--><!--select,调用StudentMap.selseAll1接口中的方法,将查询结果值交给cls对象中的studentList集合属性--></collection></resultMap><select id="selectClsStu2" resultMap="ClsAndStu1">
--         返回类型是映射文件ClsAndStu1中的属性SELECT c.*,s.sid,s.address,s.sname FROM cls cINNER JOIN student s ON c.cid=s.cid</select>

mybatis 联查相关推荐

  1. Java Mybatis 联查join resultMap对应

    需求:商品计量单位,其中计量单位名称是独立表里存储的,请求商品-计量单位时,需要把名称一起返回 以下代码 name 和 metering 二选一就可,这里方便测试,2个都写了,方便比较 // 商品计量 ...

  2. 【mybatis】mybatis多表联查,存在一对多关系的,实体中使用List作为字段接收查询结果的写法...

    实体如下: IntegralGoods  积分商品 IntegralGoodsImg 积分商品图片 ShelfLog 积分商品自动上架记录 IntegralGoods :IntegralGoodsIm ...

  3. jpi多表联查_使用mybatis进行多表联查

    一.使用mybatis的基本步骤 1.导入jar包 2.配置文件 3.使用配置文件完成操作 二.实战演习 需求:教师表里有教师id和教师姓名 学生表里有学生id,姓名,年龄,教师id 一个教师有多个学 ...

  4. 使用mybatis进行四表联查

    文章目录 一.问题背景 二.实际问题 三.问题解决 四.sql语句与XML映射文件 五.测试 一.问题背景 先数据库有用户表user.角色表role.菜单表menu.功能表funs和角色菜单关系表ro ...

  5. Mybatis关联对象(对一/对多)多表联查

    工程目录结构查看: 1.数据库文件yhmis.sql /* SQLyog 企业版 - MySQL GUI v8.14 MySQL - 5.7.16-log : Database - mybatisdb ...

  6. MyBatis Plus多表联查方法

    MyBatis Plus是一款针对MyBatis框架的增强工具, 它提供了很多方便的方法来实现多表联查. 你可以使用MyBatis Plus的selectPage方法来实现多表联查, 该方法接收一个Q ...

  7. mybatis多表联查

    这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献]八个方面深度解析后端知识/技能. 大家好,我是IT修真院深圳分院一 ...

  8. Mybatis多表联查简简单单

    Mybatis多表联查 1.一对一关系`association` 2.一对多关系`collection` 3.多对多关系 Mybatis中实现了对数据库中的数据进行封装,那么进行多表查询时就会遇到查询 ...

  9. 数据库多表查询 myBatis四表联查

    查询目标 user表 role表 角色和菜单的关系 menu表 funs表(功能) 表和表的关系 1.user对role 是多对一role对user是一对多即一个user对应一个role 一个role ...

最新文章

  1. linux ftp随机端口,linuxFTP生产环境配置
  2. ReactiveCocoa
  3. 安装使用vmware及vsphere流程介绍
  4. mysql 时区设置
  5. 初学jsp课,一个基于jsp+javabean+servlet+sql server小型房源网站,实现了用户表,房源表,及留言板的增删查改。使用deamwear编译器
  6. android手机误删通讯录恢复
  7. Mac小知识--软件的三种安装/卸载方法,优缺点分析
  8. 在lua中优雅的操作日期和时间
  9. 运动控制器位置锁存功能的应用
  10. IT界有哪些书是必看的?
  11. 服务器怎么连接无线路由器怎么设置,光猫连接无线路由器怎么设置
  12. 【系】微信小程序云开发实战坚果商城-开篇
  13. pdf转换器哪个软件好用还免费?来这里获得实用技巧!
  14. C语言二级指针 (清晰易懂 图解概述)
  15. mac下载、破解、安装webstorm编辑器
  16. 前端项目运行错误提示及解决proble (1 error, 0 warnings) m1 error and 0 warnings potentially fixable with the `--fi
  17. CPU、GPU的设计工作原理
  18. ZCash bellman版本 Groth16代码解析
  19. 汇通达IPO遇冷:募资缩水至3亿美元 汪建国与阿里是股东
  20. sql 2008 r2使用

热门文章

  1. 【网络】HTTP基础总结
  2. Android Jetpack组件之 Room使用-源码
  3. 在Android Studio中有六种依赖
  4. Linux下源码安装软件
  5. iOS 减少编译时间
  6. python软件在下载库文件_python – 并行下载多个文件的库或工具
  7. 查看源代码Source not found及在eclipse中配置jdk的src.zip源代码
  8. LintCode-56.两数之和
  9. xhtml和css概述
  10. CUBRID学习笔记 1 简介 cubrid教程