mybatis 联查
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 联查相关推荐
- Java Mybatis 联查join resultMap对应
需求:商品计量单位,其中计量单位名称是独立表里存储的,请求商品-计量单位时,需要把名称一起返回 以下代码 name 和 metering 二选一就可,这里方便测试,2个都写了,方便比较 // 商品计量 ...
- 【mybatis】mybatis多表联查,存在一对多关系的,实体中使用List作为字段接收查询结果的写法...
实体如下: IntegralGoods 积分商品 IntegralGoodsImg 积分商品图片 ShelfLog 积分商品自动上架记录 IntegralGoods :IntegralGoodsIm ...
- jpi多表联查_使用mybatis进行多表联查
一.使用mybatis的基本步骤 1.导入jar包 2.配置文件 3.使用配置文件完成操作 二.实战演习 需求:教师表里有教师id和教师姓名 学生表里有学生id,姓名,年龄,教师id 一个教师有多个学 ...
- 使用mybatis进行四表联查
文章目录 一.问题背景 二.实际问题 三.问题解决 四.sql语句与XML映射文件 五.测试 一.问题背景 先数据库有用户表user.角色表role.菜单表menu.功能表funs和角色菜单关系表ro ...
- Mybatis关联对象(对一/对多)多表联查
工程目录结构查看: 1.数据库文件yhmis.sql /* SQLyog 企业版 - MySQL GUI v8.14 MySQL - 5.7.16-log : Database - mybatisdb ...
- MyBatis Plus多表联查方法
MyBatis Plus是一款针对MyBatis框架的增强工具, 它提供了很多方便的方法来实现多表联查. 你可以使用MyBatis Plus的selectPage方法来实现多表联查, 该方法接收一个Q ...
- mybatis多表联查
这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献]八个方面深度解析后端知识/技能. 大家好,我是IT修真院深圳分院一 ...
- Mybatis多表联查简简单单
Mybatis多表联查 1.一对一关系`association` 2.一对多关系`collection` 3.多对多关系 Mybatis中实现了对数据库中的数据进行封装,那么进行多表查询时就会遇到查询 ...
- 数据库多表查询 myBatis四表联查
查询目标 user表 role表 角色和菜单的关系 menu表 funs表(功能) 表和表的关系 1.user对role 是多对一role对user是一对多即一个user对应一个role 一个role ...
最新文章
- linux ftp随机端口,linuxFTP生产环境配置
- ReactiveCocoa
- 安装使用vmware及vsphere流程介绍
- mysql 时区设置
- 初学jsp课,一个基于jsp+javabean+servlet+sql server小型房源网站,实现了用户表,房源表,及留言板的增删查改。使用deamwear编译器
- android手机误删通讯录恢复
- Mac小知识--软件的三种安装/卸载方法,优缺点分析
- 在lua中优雅的操作日期和时间
- 运动控制器位置锁存功能的应用
- IT界有哪些书是必看的?
- 服务器怎么连接无线路由器怎么设置,光猫连接无线路由器怎么设置
- 【系】微信小程序云开发实战坚果商城-开篇
- pdf转换器哪个软件好用还免费?来这里获得实用技巧!
- C语言二级指针 (清晰易懂 图解概述)
- mac下载、破解、安装webstorm编辑器
- 前端项目运行错误提示及解决proble (1 error, 0 warnings) m1 error and 0 warnings potentially fixable with the `--fi
- CPU、GPU的设计工作原理
- ZCash bellman版本 Groth16代码解析
- 汇通达IPO遇冷:募资缩水至3亿美元 汪建国与阿里是股东
- sql 2008 r2使用