Mybatis | Mybatis标签association一对一的使用
Mybatis标签association一对一的使用
- 一、association
- 二、使用方法
- 1. 方法一: 嵌套结果映射
- 2. 方法二: 嵌套select 查询
- 三、colleciton 一对多
一、association
Mybatis的 association是一对一的使用的, 在 resultMap 标签内使用
当一个Bean中有 一个Object属性需要关联查询出来的使用就用association标签
如下
查询用户结果 需要关联出 角色
用户
@Data
public class User {private Integer id;private String name;private Role role;
}
角色
@Data
public class Role {private Integer id;private Integer userId;private String name;private String type;}
sql
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL COMMENT '名称',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4;CREATE TABLE `role` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) NOT NULL COMMENT '用户id',`name` varchar(255) DEFAULT NULL COMMENT '角色名称',`type` varchar(255) DEFAULT NULL COMMENT '角色类型',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4;
二、使用方法
1. 方法一: 嵌套结果映射
<!-- 定义resultMap --><resultMap id="UserResultMap" type="User"><result column="id" property="id"/><result column="name" property="name"/><association ofType="role" property="role"><result column="role_id" property="id"/><result column="role_name" property="name"/><result column="role_type" property="type"/></association></resultMap><!--查询语句--><select id="selectUserById" resultMap="UserResultMap">select u.id ,u.name,r.id AS role_id ,r.name AS role_name ,r.type AS role_type FROM user AS u INNER JOIN role AS r ON u.id = r.user_id where u.id = #{id}</select>
2. 方法二: 嵌套select 查询
<!-- 定义resultMap --><resultMap id="UserResultMap" type="User"><result column="id" property="id"/><result column="name" property="name"/><association ofType="role" property="role" column="id" select="selectRoleByUserId"/></resultMap><!--查询语句--><select id="selectUserById" resultMap="UserResultMap">select id , name FROM user where id = #{id}</select><!--查询语句--><select id="selectRoleByUserId" resultMap="Role">select id , name,type FROM role where user_id = #{userId}</select>
- select=“selectRoleByUserId” 找的是第二个sql语句,如果调用别的xml文件中方法写全路径就可以找到.
- column=“id” 参数id 传多个参数的话就是 {“属性名”=“参数”,“属性名”=“参数”} 这样的.
三、colleciton 一对多
collection 一对多 : https://blog.csdn.net/qq825478739/article/details/127357819
Mybatis | Mybatis标签association一对一的使用相关推荐
- Mybatis xml中配置一对一关系association一对多关系collection
Mybatis xml中配置一对一关系association&一对多关系collection 今天在配置一对一关系映射以及一对多关系映射的时候,把collection中应该使用的ofType配 ...
- mybatis sql标签_这谁顶得住?Mybatis 十八连环问
来自:开源中国,作者:祖大俊 链接:https://my.oschina.net/zudajun/blog/747682 1.#{}和${}的区别是什么? 答:${}是Properties文件中的变量 ...
- mybatis sql标签_【1039期】Mybatis面试18问,你想知道的都在这里了!
1.#{}和${}的区别是什么? 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdb ...
- 7. MyBatis多表查询 - 一对一 - 一对多 - 多对多
7. MyBatis多表查询 - 一对一 - 一对多 - 多对多 前言 在前面的篇章,我们已经熟悉了单表查询,下面我们来看看如何进行 多表查询. 数据准备 create database if not ...
- Mybatis | Mybatis标签collection一对多的使用
Mybatis标签collection一对多的使用 一.colleciton 标签 二.collection使用方法 1. 方法一: 嵌套结果映射 2. 方法二: 嵌套select 查询 三. ass ...
- MyBatis resultMap 标签的作用
目录 MyBatis resultMap 1. 什么时候用到 resultmap 标签 2. 单表查询实体类的属性名与表的列名不对应 a. 实体类 b. 接口 c. 接口对应的 Mapper 文件 d ...
- mybatis trim标签_MyBatis学习笔记
MyBatis开发文档: mybatis - MyBatis 3mybatis.org mapper接口开发的四个规范: XxxMapper.xml配置文件的名称命名空间值必须是mapper接口的全 ...
- Mybatis 示例之 Association (2)
接上篇:Mybatis 示例之 Association 上一篇讲到了association的关联结果查询,这里讲association的关联的嵌套查询,这种方式用起来很容易,和关联结果查询相比缺点就是 ...
- 【Mybatis高级映射】一对一映射、一对多映射、多对多映射
前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...
最新文章
- 对接多种三方的设计模式_死磕设计模式之适配器模式
- 论文笔记:Deep Residual Learning
- OAuth 2.0(网转)
- 人工智能秘史(四):憧憬人机共生的“DARPA梦想家”
- mysql group by null_MySQL无GROUP BY直接HAVING返回空的问题分析
- linux图形界面装mysql_ubuntu 安装图形界面
- 满纸辛酸泪 —— 红楼梦中话
- LQ-1600K打印机色带传动故障分析
- 目标检测的图像特征提取之(三)Haar特征
- 大学生常用的pt网站
- PS画虚线的几种方法
- 迅捷PDF转换成word转换器
- Buct oj 1016
- Facebook 的开源静态分析工具Infer
- CodeForces - 14E Camels【DP】
- 浏览器选择 html,select的最佳预设打造全兼容各浏览器select
- 2022年磺化工艺考试练习题及模拟考试
- deinterlace 隔行 progressive 逐行 3:2pulldown
- 基于java派大星水产商城mp4计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- SRE(运维)最重要的是什么,看这一篇就够了