MyBatis一对多关联查询总结(五)
来源:互联网 发布:linux snmp 监控cpu 编辑:程序博客网 时间:2024/06/06 00:49
1:Classes2
package com.mybatis.domain;
import java.util.List;
public class Classes2 {
//定义实体类的属性,与class表中的字段对应
private Integer id; //id===>c_id
private String name; //name===>c_name
/**
* class表中有一个teacher_id字段,所以在Classes类中定义一个teacher属性,
* 用于维护teacher和class之间的一对一关系,通过这个teacher属性就可以知道这个班级是由哪个老师负责的
*/
private Teacher teacher;
private List<Student> students;
public Classes2() {
}
public Classes2(String name) {
this.name = name;
}
public Classes2(Integer id, String name, Teacher teacher) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer 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 List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "Classes2 [id=" + id + ", name=" + name + ", teacher=" + teacher
+ ", students=" + students + "]";
}
}
2:Teacher
package com.mybatis.domain;
// 定义teacher表对应的实体类
public class Teacher {
//定义实体类的属性,与teacher表中的字段对应
private Integer id; //id===>t_id
private String name; //name===>t_name
public Teacher() {
}
public Teacher(String name) {
this.name = name;
}
public Teacher(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
}
}
3:Student
package com.mybatis.domain;
///定义student表所对应的实体类
public class Student {
//定义属性,和student表中的字段对应
private Integer id; //id===>s_id
private String name; //name===>s_name
public Student() {
}
public Student(String name) {
this.name = name;
}
public Student(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
4:Classes2Mapper
package com.mybatis.dao;
import com.mybatis.domain.Classes2;
public interface Classes2Mapper {
public Classes2 getClasses2AndTeacherWithStudents(Integer id);
}
5:Classes2Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.dao.Classes2Mapper">
<!--
根据classId查询对应的班级信息,包括学生,老师
-->
<!--
方式一: 嵌套结果: 使用嵌套结果映射来处理重复的联合结果的子集
SELECT * FROM class c, teacher t,student s WHERE c.teacher_id=t.t_id AND c.C_id=s.class_id AND c.c_id=1
-->
<resultMap type="com.mybatis.domain.Classes2" id="ClassResultMap3">
<id property="id" column="c_id"/>
<result property="name" column="c_name"/>
<association property="teacher" column="teacher_id" javaType="com.mybatis.domain.Teacher">
<id property="id" column="t_id"/>
<result property="name" column="t_name"/>
</association>
<!-- collection:集合,表示一对多,ofType指定students集合中的对象类型 -->
<collection property="students" ofType="com.mybatis.domain.Student">
<id property="id" column="s_id"/>
<result property="name" column="s_name"/>
</collection>
</resultMap>
<!-- public Classes2 getClasses2AndTeacherWithStudents(Integer id) -->
<select id="getClasses2AndTeacherWithStudents" parameterType="java.lang.Integer" resultMap="ClassResultMap3">
select * from class c, teacher t,student s where c.teacher_id=t.t_id and c.C_id=s.class_id and c.c_id=#{id}
</select>
</mapper>
6:TestOneToMany
package com.mybatis.test;
import java.io.IOException;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.mybatis.dao.Classes2Mapper;
import com.mybatis.domain.Classes2;
import com.mybatis.util.MybatisUtil;
public class TestOneToMany {
@Test
public void test1() throws IOException{
SqlSession sqlSession = MybatisUtil.getSqlSession();
Classes2Mapper mapper=sqlSession.getMapper(Classes2Mapper.class);
Classes2 classes=mapper.getClasses2AndTeacherWithStudents(1);
System.out.println(classes);
sqlSession.commit();
sqlSession.close();
}
}
MyBatis中使用collection标签来解决一对多的关联查询,ofType属性指定集合中元素的对象类型
- MyBatis一对多关联查询总结(五)
- 【Mybatis学习总结五】实现关联表查询----一对多关联(collection)
- Mybatis一对多关联查询
- mybatis一对多关联查询
- Mybatis一对多关联查询
- mybatis一对多关联查询
- mybatis学习笔记(五) --- 一对多关联
- MyBatis 一对多双向关联查询
- MyBatis-一对多关联表查询 -06
- mybatis 关联查询 一对一 一对多
- Mybatis入门--关联查询一对多
- mybatis一对多关联查询示例
- Mybatis一对多关联表查询
- MyBatis中一对多关联查询
- mybatis关联查询,一对一,一对多
- Mybatis一对一、一对多关联查询
- mybatis多表(一对多关联查询)
- mybatis系列八:一对多关联查询
- JavaScript——DOM操作
- 2.Git初始化
- C语言计算sinx
- OGG-00396 Command not terminated by semi-colon
- Effective Java
- MyBatis一对多关联查询总结(五)
- 【HTML 基础】02 基本标签
- springMVC的常用注解
- 51Nod-1522-上下序列
- Struts2注解式开发小记
- JAVA JNI生成C++头文件
- A. Sasha and Sticks
- HPU2017-栈和队列练习
- 扩展阅读 八面玲珑