多对一和一对多的处理P21,P22
创始人
2024-01-20 13:01:25
0

多对一:

按照查询嵌套处理:

StudentMapper:(接口很简单需要返回一个List)

package com.Li.dao;import com.Li.pojo.Student;
import org.apache.ibatis.annotations.Select;import java.util.List;public interface StudentMapper {//查询所有学生的信息,以及对应的老师的信息.难点在于写出对的sqlpublic List getStudent();
}

StudentMapper.xml:(难点:嵌套查询,association是对对象的处理,相当于查询了两次之后拼接在了一起)



测试类增加的内容:

@Testpublic void testStudent(){SqlSession sqlSession = MybatisUtils.getSqlSession();StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);List studentList = mapper.getStudent();for (Student student : studentList) {System.out.println(student);}sqlSession.close();}

 成功!

按照结果嵌套处理:

第二种方式的接口:

public List getStudent2();

StudentMapper.xml:详解可以看里面的注释。

 

在这里做一个小小的修改就可以测试了。

 成功!

个人感觉第二种方式比较易于理解,并且方便使用。

如果第一种方式要连接5个表的话,还需要多写5个select分散的语句再将他们连起来。

在做一件事的时候一定是分工明确的。sql就写sql,对应关系就搞对应关系,分工明确。实现高内聚。这样分块之后,可读性强,而且易于修改。

问题:我没有查询老师的id为什么结果会有老师的id???

这两种对应两种sql查询方式:

子查询

联表查询

一对多:

配置基础环境:很简单。

 创建moudule之后,复制06的这几个内容。pom.xml只需要导入一个lombox包就OK了

 修改实体类,变为一对多。以下分别是Student和Teacher

package com.Li.pojo;import lombok.Data;@Data
public class Student {private int id;private String name;private int tid;
}
package com.Li.pojo;import lombok.Data;import java.util.List;@Data
public class Teacher {private int id;private String name;//一个老师拥有多个学生private List students;
}

编写这个

这个方式是我最喜欢的处理方式。

    

注意看注释的内容。里面有解析。

创建测试文件:

    @Testpublic void Test(){SqlSession sqlSession = MybatisUtils.getSqlSession();TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);Teacher teacher = mapper.getTeacher(1);System.out.println(teacher);sqlSession.close();}

测试成功!

 第二种方式:(个人不推荐)

接口代码:

//子查询的方式实现Teacher getTeacher2(@Param("tid") int id);

 TeacherMapper.xml:

 

测试代码:

 

@Testpublic void Test2(){SqlSession sqlSession = MybatisUtils.getSqlSession();TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);Teacher teacher = mapper.getTeacher2(1);System.out.println(teacher);sqlSession.close();}

成功!

小结:

javaType:实体类中属性的类型。也就是参数的数据类型

ofType:泛型中才会出现。值为泛型中的数据类型。如List<某某某>,那么ofType的值就是某某某。

面试高频:

  • Mysql引擎
  • InnoDB底层原理
  • 索引
  • 索引优化

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...