要点


在Student类中添加List<Classes> classList 属性
在Classes类中添加List<Student> students属性

在ClassesMapper.xml中

< resultMap>

< collection ofType="Student">
< /collection>
</ resultMap>

在StudentMapper.xml中
< resultMap>

< collection ofType="Classes">
< /collection>
</ resultMap>

1.创建数据表

本实例需要两张数据表
student表:

classes表

2.创建实体类

Student:

package com.ytsky.mybatis.demo.entity;import java.util.List;public class Student {private int id;private String stuno;private String stuname;private String sex;private String classno;private  List<Classes> classesList;public int getId() {return id;}public void setId(int id) {this.id = id;}public List<Classes> getClassesList() {return classesList;}public void setClassesList(List<Classes> classesList) {this.classesList = classesList;}public String getStuno() {return stuno;}public void setStuno(String stuno) {this.stuno = stuno;}public String getStuname() {return stuname;}public void setStuname(String stuname) {this.stuname = stuname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getClassno() {return classno;}public void setClassno(String classno) {this.classno = classno;}@Overridepublic String toString() {return "Student{" +"id=" + id +", stuno='" + stuno + '\'' +", stuname='" + stuname + '\'' +", sex='" + sex + '\'' +", classno='" + classno + '\'' +", classesList=" + classesList +'}';}
}

Classes:

package com.ytsky.mybatis.demo.entity;import java.util.List;public class Classes {private int id;private String classno;private String name;private String major;private List<Student> students;public List<Student> getStudents() {return students;}public void setStudents(List<Student> students) {this.students = students;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getClassno() {return classno;}public void setClassno(String classno) {this.classno = classno;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}@Overridepublic String toString() {return "Classes{" +"id=" + id +", classno='" + classno + '\'' +", name='" + name + '\'' +", major='" + major + '\'' +", students=" + students +'}';}
}

3.创建映射文件

ClassesMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ytsky.mybatis.demo.dao.ClassesMapper"><select id="selectClassesWithStudent" resultMap="ClassesWithStudentMap">select classes.id, classes.classno, name, major,student.id, student.classno, stuno, sex, stunamefrom db_quote.classesjoin db_quote.studenton db_quote.student.id = db_quote.classes.idwhere db_quote.student.classno="Class001";</select><resultMap id="ClassesWithStudentMap" type="Classes"><id column="id" property="id" /><result column="classno" property="classno" /><result column="name" property="name" /><result column="major" property="major" /><collection property="students" ofType="Student"><id column="id" property="id" /><result column="classno" property="classno" /><result column="stuno" property="stuno" /><result column="sex" property="sex" /></collection></resultMap></mapper> 

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ytsky.mybatis.demo.dao.StudentMapper"><select id="selectStudentWithClasses" resultMap="StudentWithClassesMap">select student.id, stuno, stuname, sex, student.classno,classes.id, classes.classno,name, majorfrom db_quote.studentjoin db_quote.classeson classes.id = student.id;</select><resultMap id="StudentWithClassesMap" type="Student"><id column="id" property="id" /><result column="classno" property="classno" /><result column="stuno" property="stuno" /><result column="stuname" property="stuname" /><result column="sex" property="sex" /><collection property="classesList" ofType="Classes"><id column="id" property="id" /><result column="classno" property="classno" /><result column="name" property="name" /><result column="major" property="major" /></collection></resultMap></mapper> 

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="jdbc.properties"/><settings><setting name="mapUnderscoreToCamelCase" value="true"/><setting name="logImpl" value="LOG4J"/></settings>
<!--    <typeAliases>-->
<!--        <typeAlias type="com.ytsky.mybatis.demos.entity.Customer" alias="Customer"/>-->
<!--    </typeAliases>--><typeAliases><package name="com.ytsky.mybatis.demo.entity"/></typeAliases><plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin></plugins><environments default="dev"><environment id="dev"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="url" value="${jdbc.url}"/></dataSource></environment></environments><mappers><mapper resource="mapper/CustomerMapper.xml"></mapper><mapper resource="mapper/ProductMapper.xml"></mapper><mapper resource="mapper/ProductTypeMapper.xml"></mapper><mapper resource="mapper/UserMapper.xml"></mapper><mapper resource="mapper/StudentMapper.xml"></mapper><mapper resource="mapper/ClassesMapper.xml"></mapper></mappers></configuration> 

4.创建数据操作接口

ClassesMapper:

package com.ytsky.mybatis.demo.dao;import com.ytsky.mybatis.demo.entity.Classes;import java.util.List;public interface ClassesMapper {List<Classes> selectClassesWithStudent();
}

StudentMapper:

package com.ytsky.mybatis.demo.dao;import com.ytsky.mybatis.demo.entity.Student;import java.util.List;public interface StudentMapper {List<Student>selectStudentWithClasses();int updateById(Student student);
}

5.编写测试类

Test1:

package com.ytsky.mybatis.demo.test1;import com.ytsky.mybatis.demo.dao.ClassesMapper;
import com.ytsky.mybatis.demo.dao.StudentMapper;
import com.ytsky.mybatis.demo.entity.Classes;
import com.ytsky.mybatis.demo.entity.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.util.List;public class Test1 {private static SqlSessionFactory factory;static {try{factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {
//        System.out.println(findClassesWithStudent());System.out.println(findStudentWithClasses());}public static List<Classes> findClassesWithStudent(){SqlSession session = factory.openSession();List<Classes> classes = session.getMapper(ClassesMapper.class).selectClassesWithStudent();session.close();return classes;}public static List<Student> findStudentWithClasses(){SqlSession session = factory.openSession();List<Student> students = session.getMapper(StudentMapper.class).selectStudentWithClasses();session.close();return students ;}}

6.运行结果

Mybatis一对多关联查询详解相关推荐

  1. mybatis一对多关联查询两种方式

    mybatis一对多关联查询两种方式 前提: 方式一: 方式二: 前提: 现在有两张表,学生表跟教师表,一个教师对应多个学生 教师表: CREATE TABLE `teacher` (`id` int ...

  2. Mybatis一对多关联查询,返回值Map,字段自动映射

    功能描述 由于查询字段和表名都要支持动态配置,故查询返回值需要为List<Map<String,Object>>,不定义值对象. 查询结果列需要支持自动映射,不配置类属性和数据 ...

  3. mybatis一对多关联查询_Mybatis 一对一、一对多的关联查询 ?

    <mapper namespace="com.lcb.mapping.userMapper"> <!--association 一对一关联查询 --> &l ...

  4. mybatis一对多关联查询将结果封装到嵌套list

    DishDto中有个List集合保存DishFlavor对象,DishFlavor根据关联查询获得,一个dish对应多个dishflavor.想要联合查询自动将DishFlavor封装成集合需要用co ...

  5. SQL关联查询详解,SQL JOIN详解

    关联查询,也称为多表查询,指两个或更多个表一起完成查询操作. 前提条件:这些一起查询的表之间是有关系的(一对一.一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键. 一 ...

  6. SQL-多表关联查询详解

    为了在工作中能更顺利的使用多表关联查询,今天这篇博客就写这个内容了. 在讲解多表关联查询之前,先生成测试表. 登录scott用户,运行以下语句生成测试表. create table ex1 as se ...

  7. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析

    推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...

  8. 15、mybatis一对多关联查询 collection定义关联集合封装规则及懒加载

    文章目录 1.collection定义关联集合封装规则单步查询 1).Dept增加集合属性 2).DeptMapper增加查询接口 3).DeptMapper.xml增加collection配置 4) ...

  9. Mybatis 一对多关联查询collection用法

    使用resultMap, select 标签, resultMap的中的collection表示一对多,column对应select标签中的sql里的字段或者别名,当两个表字段名称有相同的情况下,可以 ...

最新文章

  1. 维护窗口和停机时间 可用率99.99%
  2. 太原益学领军2021年高考成绩查询,益学领军 | 2020寒假高三拼命班火爆进行中
  3. opencl获取gpu信息_如果在尝试获取OpenCL gpu设备类型时,Char *语句出现问题
  4. mysql 结构优化建议_MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)...
  5. 将文件中的参数读取成Map
  6. 黑马程序员_Java基础GUI
  7. Linux内存卡(SD卡、TF卡)作为Swap交换空间
  8. 搞生物的速看!有了它,30分钟可以把一天的工作都给干完!
  9. 超级实用的设计类网址导航--一流设计导航
  10. Rhadoop的安装
  11. 建筑施工企业数字化安全质量监督管理系统
  12. 微信 h5(公众号)简单登录
  13. 找出数组中重复的值和所在位置
  14. php ma,第十四届萌芽杯优秀作品展示第一期
  15. python中code函数是干嘛的_[Code] Python简单小知识
  16. orcle plsql 列类型 BLOB与CLOB的互转,RAW
  17. Xilinx ZYNQ简介
  18. 如何确定当前的iPhone /设备型号?
  19. 在CSS世界的权力——权重
  20. Systemverilog中时间单位以及相关系统函数

热门文章

  1. Mac火影忍者的房子高清动态壁纸
  2. mac安装protobuf
  3. 2023年新电脑游戏锁40帧解决办法
  4. 华为mate10科学计算机,华为Mate10的电脑模式如何使用?方法简单粗暴手机秒变PC!...
  5. swoole一键携程化mysql_【SWOOLE系列】浅淡SWOOLE协程(二) 一键协程化
  6. ubuntu root账号忘记密码解决办法
  7. windows程序设计 文字和字体
  8. 计算机设计与制作教学设计,计算机应用基础(五年制大专)表格的设计与制作教学设计...
  9. 常见的表单元素有哪些?各有什么属性?
  10. 华为模拟器静态路由默认路由设置及VLAN配置