06.Mybatis关联查询
1.一对一关联查询
需求:查询出每条orders记录和其关联的user信息
在orders实体类中添加属性与set、get方法
- /**
- * 测试1对1关联查询
- */
- private User user;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
接口:
- public interface OrdersMapper {
- /**
- * 测试1对1关联查询
- */
- public List<Orders> findAllOrdersCNUser();
- }
映射:
- <!-- 1对1的返回map
- 不能省略映射,必须把所有想要查询出来的属性都手动映射
- -->
- <resultMap type="Orders" id="orders">
- <id property="id" column="id"/>
- <result property="userId" column="user_id"/>
- <result property="number" column="number"/>
- <result property="createtime" column="createtime"/>
- <result property="note" column="note"/>
- <!-- 1对1属性 -->
- <!-- javaType必须写!! -->
- <association property="user" javaType="user">
- <id property="id" column="id"/>
- <result property="username" column="username"/>
- <result property="sex" column="sex"/>
- <result property="birthday" column="birthday"/>
- <result property="address" column="address"/>
- </association>
- </resultMap>
- <!-- 测试一对1关联查询 -->
- <select id="findAllOrdersCNUser" resultMap="orders">
- select
- *
- from
- orders o left join user u
- on o.user_id=u.id
- </select>
测试:
- /**
- * 1对1关联查询
- */
- @Test
- public void m01() {
- // 获取sqlSession,和Spring整理后由Spring管理
- SqlSession sqlSession = this.sqlSessionFactory.openSession();
- // 从sqlSession中获取Mapper接口的代理对象
- OrdersMapper ordersMapper = sqlSession.getMapper(OrdersMapper.class);
- // 执行查询
- List<Orders> list = ordersMapper.findAllOrdersCNUser();
- for (Orders orders : list) {
- System.out.println(orders);
- System.out.println(orders.getUser());
- }
- // 和Spring整理后由Spring管理
- sqlSession.close();
- }
2.一对多关联查询
需求:查询出所有的user和与其对应的orders信息
在user实体类中添加属性和set、get方法
- /**
- * 测试1对多
- */
- List<Orders> ordersList;
- public List<Orders> getOrdersList() {
- return ordersList;
- }
- public void setOrdersList(List<Orders> ordersList) {
- this.ordersList = ordersList;
- }
接口:
- /**
- * 测试1对多
- */
- public List<User> findAllUserCNOrders();
映射:
- <!-- 1对多返回映射 -->
- <resultMap type="User" id="user">
- <id property="id" column="id" />
- <result property="username" column="username" />
- <result property="sex" column="sex" />
- <result property="birthday" column="birthday" />
- <result property="address" column="address" />
- <!-- javaType && ofType必须写!! -->
- <collection property="ordersList" javaType="List" ofType="Orders">
- <id property="id" column="id" />
- <result property="userId" column="user_id" />
- <result property="number" column="number" />
- <result property="createtime" column="createtime" />
- <result property="note" column="note" />
- </collection>
- </resultMap>
- <!-- 测试1对多 -->
- <select id="findAllUserCNOrders" resultMap="user">
- select * from
- user u
- left join orders o
- on u.id = o.user_id
- </select>
测试:
- /**
- * 测试1对多
- */
- @Test
- public void m01() {
- // 获取sqlSession,和Spring整理后由Spring管理
- SqlSession sqlSession = this.sqlSessionFactory.openSession();
- // 从sqlSession中获取Mapper接口的代理对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- // 执行查询
- List<User> list = userMapper.findAllUserCNOrders();
- for (User user : list) {
- System.out.println(user);
- System.out.println(user.getOrdersList());
- }
- // 和Spring整理后由Spring管理
- sqlSession.close();
- }
06.Mybatis关联查询的更多相关文章
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
- MyBatis基础:MyBatis关联查询(4)
1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...
- MyBatis关联查询,一对多关联查询
实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collect ...
- mybatis 关联查询实现一对多
场景:最近接到一个项目是查询管理人集合 同时每一个管理人还存在多个出资人 要查询一个管理人列表 每个管理人又包含了出资人列表 采用mybatis关联查询实现返回数据. 实现方式: 1 .在实体 ...
- MyBatis关联查询、多条件查询
MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...
- Mybatis关联查询之二
Mybatis关联查询之多对多 多对多 一.entity实体类 public class Student { private Integer stuid; private String stuname ...
- mybatis关联查询基础----高级映射
本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录 ...
- MyBatis关联查询和懒加载错误
MyBatis关联查询和懒加载错误 今天在写项目时遇到了个BUG.先说一下背景,前端请求更新生产订单状态,后端从前端接收到生产订单ID进行查询,然后就有问题了. 先看控制台报错: org.apache ...
- Mybatis关联查询(嵌套查询)
上一篇文章介绍了基于Mybatis对数据库的增.删.改.查.这一篇介绍下关联查询(join query). 三张表:user article blog 表的存储sql文件: /* Navicat My ...
随机推荐
- 并发编程(五)——GIL全局解释器锁、死锁现象与递归锁、信号量、Event事件、线程queue
GIL.死锁现象与递归锁.信号量.Event事件.线程queue 一.GIL全局解释器锁 1.什么是全局解释器锁 GIL本质就是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL,同一进程内的多 ...
- ubuntu 搭建嵌入式开发环境tftp的方法
网上很多安装的时候都要安装tftpd-hpa tftp-hpa xinetd三个安装包,经我测试,xinetd无需安装,安装好前两个后,修改tftpd-hpa的配置文件即可:etc/default/t ...
- [已解决]报错:execjs._exceptions.ProgramError: ReferenceError: window is not defined
问题: execjs._exceptions.ProgramError: ReferenceError: window is not defined 解决: 定义一个就行 var window = { ...
- 牛客练习赛51 B 子串查询 https://ac.nowcoder.com/acm/contest/1083/B
题目描述 给出一个长度为n的字符串s和q个查询.对于每一个查询,会输入一个字符串t,你需要判断这个字符串t是不是s的子串.子串的定义就是存在任意下标a<b<c<d<e,那么”s ...
- 2018湘潭大学程序设计竞赛【E】
题目链接:https://www.nowcoder.com/acm/contest/105/E 题意:给你美食种类和查询次数,告诉你美味度和价格,给你固定钱数,问你最多能吃到多少美味度的食物.(X真是 ...
- vue swiper上下无缝轮播
参考:https://www.jianshu.com/p/5e5e59065e9c 效果: index.html: <link href="https://cdn.bootcss.co ...
- useradd -帐号建立或更新新使用者的资讯
总览 SYNOPSIS useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group ...
- uniq - 删除排序文件中的重复行
总览 (SYNOPSIS) ../src/uniq [OPTION]... [INPUT [OUTPUT]] 描述 (DESCRIPTION) 从 INPUT (或 标准输入) 数据 中 忽略 (但是 ...
- 2019_8_1python
#函数 #函数是用来重复使用哒 #定义函数套路 ''' 1.首先要会写出裸代码,然后看看哪里是重复需要使用的 2.接下来将需要重复使用的代码转换成参数,带入到函数中 函数格式 def funcName ...
- Mysql ibd恢复(delete 数据)
转载:https://www.linuxidc.com/Linux/2017-05/143870.htm 首先呢,请各位注意Percona Data Recovery Tool for InnoDB工 ...