sql插入表student的语句:

insert into student (id, name, tid) values ('9', '梁梁','2');
insert into student (id, name,tid) values ('7', '亮亮','2');

两张表:




所对应的实体类,学术类:

package com.kuang.pojo;import lombok.Data;public class Student {private int id;private String name;@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", teacher=" + teacher +'}';}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}public Student(int id, String name, Teacher teacher) {this.id = id;this.name = name;this.teacher = teacher;};public Student(){};private Teacher teacher;//利用这个来做到一个老师关联多个学生
}

老师:

package com.kuang.pojo;import lombok.Data;import java.util.List;@Data
public class Teacher {private int id;private String name;
private List<Student>stus;//一个老师关联多个学生
}

多对一查询语句:
sql编辑器下面输入:

select s.id,s.name,t.name from student s,teacher t where s.tid = t.id;

显示:

嵌套查询:

按照查询嵌套处理

目录:

查询所有的学生信息
根据查询出来的学生tid,寻找对应的老师,子查询:

<mapper namespace="com.kuang.dao.Studenmapper">
<select id="getstudent" resultMap="StudenTeacher">select * from student
</select><resultMap id="StudenTeacher" type="com.kuang.pojo.Student"><result property="id" column="id"/><result property="name" column="name"/><association property="teacher" column="tid" javaType="com.kuang.pojo.Teacher" select="getTeacher"/></resultMap>
<select id="getTeacher" resultType="com.kuang.pojo.Teacher">select * from teacher where id=#{id}
</select>
</mapper>

复杂的属性,我们需要单独处理,对象:association,集合:collection
测试类:

   @Testpublic void  testStudent(){SqlSession sqlSession = MybatisUtils.getSqlSession();Studenmapper stuma = sqlSession.getMapper(Studenmapper.class);List<Student> stu = stuma.getstudent();for(Student stu1:stu){System.out.println(stu1);}sqlSession.close();}

注意,type要用全类名,不然会报错

按照结果嵌套处理

测试类:

  @Testpublic void  testStudent(){SqlSession sqlSession = MybatisUtils.getSqlSession();Studenmapper stuma = sqlSession.getMapper(Studenmapper.class);List<Student> stu = stuma.getstudent2();for(Student stu1:stu){System.out.println(stu1);}sqlSession.close();}

Studenmapper:

package com.kuang.dao;
import com.kuang.pojo.Student;import java.util.List;public interface Studenmapper
{public List<Student>getstudent();public List<Student>getstudent2();
}

xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.Studenmapper">
<select id="getstudent2" resultMap="StudenTeacher2">select s.id sid,s.name sname,t.name tnamefrom student s,teacher twhere s.tid=t.id;
</select><resultMap id="StudenTeacher2" type="com.kuang.pojo.Student"><result property="id" column="sid"/><result property="name" column="sname"/><association property="teacher"  javaType="com.kuang.pojo.Teacher" ><result property="name" column="tname"></result></association></resultMap></mapper>

这里因为把teacher拼成了teahcer导致报错,还有注意type的写法是全类名。
select s.id sid,s.name sname,t.name tname:
取了三个别名

mybatis复杂查询环境 多对一的处理 按照结果嵌套处理和按照查询嵌套处理相关推荐

  1. java day55【 Mybatis 连接池与事务深入 、 Mybatis 的动态 SQL 语句、 Mybatis 多表查询之一对多 、 Mybatis 多表查询之多对多】...

    第1章 Mybatis 连接池与事务深入 1.1 Mybatis 的连接池技术 1.1.1 Mybatis 连接池的分类 1.1.2 Mybatis 中数据源的配置 1.1.3 Mybatis 中 D ...

  2. layui表格显示后台的多表的级联查询(多对多,多对一)带mybatis级联查询源码,已解决

    在ssm和springboot项目中我们存在表与表之间一对多和多对多的情况,那么他们就要进行级联查询查询出相关联的数据,级联查询涉及到的问题就是在一个实体类中存在另一个实体类的对象(一对一)或者对象集 ...

  3. Mybatis的多表关联查询(多对多)

    Mybatis的多表关联查询(多对多) 项目目录结构 实现 Role 到 User 多对多 业务要求 用户与角色的关系模型 编写角色实体类 编写 Role 持久层接口 实现的 SQL 语句 编写映射文 ...

  4. MyBatis 如何实现一个多对多的关联查询呢?

    转自: MyBatis 如何实现一个多对多的关联查询呢? 下文将通过示例的方式,讲述多对多的关联查询,如下所示: 例 ,一个订单可以有多种商品, 一种商品可以对应多个订单, 订单与商品就是多对多的级联 ...

  5. mybatis学习笔记(12)-多对多查询

    mybatis学习笔记12-多对多查询 示例 多对多查询总结 resultMap总结 本文实现多对多查询,查询用户及用户购买商品信息. 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通 ...

  6. Mybatis一对多及多对多映射查询

    1.数据库准备工作 --删除表 drop table SelectiveInfo; drop table StudentInfo; drop table ClassInfo; drop table T ...

  7. MyBatis 一对多、多对一的处理~

    目录 1.多对一处理 1.1.打个比方 1.2.实例环境搭建 1.3.目标:查询所有的学生信息以及对应的老师信息 方式一:查询嵌套 方式二:结果嵌套 2.一对多处理 2.1.目标:获取指定老师下的所有 ...

  8. MyBatis一对多与多对一

    一对多 项目结构目录 项目结构搭建 数据库文件 CREATE TABLE `teacher` (`id` INT(10) NOT NULL PRIMARY KEY,`name` VARCHAR(30) ...

  9. Mybatis入门:1(Mybatis框架的环境搭建)

    Mybatis框架的环境搭建 一.创建maven工程并导入坐标 导入坐标: <dependencies><dependency><groupId>org.mybat ...

最新文章

  1. Spring Web Application Security
  2. 语音识别 | GMM-HMM、DNN-HMM等主流算法及前沿技术
  3. 1、docker容器技术基础入门
  4. logfile switch causes incremental checkpoint?
  5. android8.0于与ios,android 8.0 oreo抄袭苹果吗 android oreo和ios 11对比
  6. vue ui框架_Vue移动端UI框架指南
  7. Flutter实战一Flutter聊天应用(三)
  8. vs2017python配置opencv cv2_VS2017中配置opencv教程
  9. 0.96寸OLED 的驱动原理及代码(IIC模式)
  10. CCSK云安全认证-M3-管理云计算的安全性和风险
  11. PHP 对接阿里云短信接口
  12. ArcGISServer 发布地理处理服务:以CAD数据至地理数据库为例(1)CAD转至地理数据库
  13. Yolov3中先验框生成
  14. 那些年我们踩过的坑——Java中Date夏令时日期转换不一致问题
  15. SOLIDWORKS 2022官方正版新功能介绍
  16. 如何打造数据化决策管理
  17. 二分查找及查找左、右边界
  18. c++微信读书学习笔记——很久以前随便写的
  19. java计算机毕业设计国产精品动漫网站源码+mysql数据库+系统+lw文档+部署
  20. 探索人机未来:人机融合智能

热门文章

  1. controller方法名一样参数传递不同如何根据参数匹配_【Java学习 | Javase】方法
  2. 左外连接的sql语句_Django数据库连接和使用原生sql语句
  3. python拷贝文件函数_Python Set集合,函数,深入拷贝,浅入拷贝,文件处理
  4. 一、史上最强hadoop分布式集群的搭建
  5. 通过flask构建自己的代理池
  6. python与 积分
  7. oracle子查询为游标结果集,这个SQL怎么破?select后的爬树子查询(connect by)变换
  8. 研发大佬组团带玩生成对抗网络(GAN),B站直播教学
  9. AAAI 2021最佳论文亚军:Attention+积分梯度=归因解释新方法
  10. 做 NLP 算法研究,去大公司还是创业公司?