mybatis一对多的查询方法详解
来源:互联网 发布:脸部去角质 知乎 编辑:程序博客网 时间:2024/06/05 19:41
因为是用记事本写的,可能排版比较乱,所以先附上一张大图片。
首先,先新建两个实体类Teacher.java和Student.javapublic class Teacher { private Integer teacherId; private String teacherName; //getXxx()和setXxx()方法省略}public class Student { private String studentName; private String studentAddr; private Integer teacherId; //getXxx()和setXxx()方法省略}他们的关系是:一(个老师)对应多(个学生),通过teacherId进行关联。**************************************************************************************************************------------------------------------------------第一种方式----------------------------------------------------**************************************************************************************************************1、首先在Teacher.java中添加一个List<Student>集合,表示多个学生。修改之后的Teacher.java类:public class Teacher { private String teacherName; private Integer teacherAge; private List<Student> stuList; //getXxx()和setXxx()方法省略}2、接下来就是在Mapper.xml中做文章了。 2.1、StudentMapper.xml中的字段映射就安装正常的字段映射来写就可以了。 2.2、TeacherMapper.xml文件 <resultMap id = "TeacherResultMap" type = "Teacher.java的路径"> <result column = "表字段名" property = "属性名" /> .... <!-- ************************************ * 重点就在这里 * ************************************ --> <collection property="stuList" column="teacherId" javaType="ArrayList" ofType="Student实体类路径" select="getStudentByTeacherId"/> <!-- ************************************ * property是关联的字段,ofType是查* * 询返回的学生信息对应的实体类, * * select为要执行的查询学生列表的 * * 查询语句。 * ************************************ --> </resultMap> <resultMap id="StudentResultMap" type="Student实体类路径"> <result property="studentName" column="studentName" /> <result property="studentAddr" column="studentAddr" /> ... </resultMap> <select id="getTeacherByID" resultMap="TeacherResultMap" parameterType="java.lang.Integer" > select teacherId,teacherName from teacher where teacherId = #{teacherId} </select> <select id="getStudentByTeacherId" resultMap="StudentResultMap" parameterType="java.lang.Integer" > select studentName,studentAddr,teacherId from student_t where teacherId = #{teacherId} </select>这个时候,通过getTeacherByID就可以查出一个教师的信息和每个教师所对应的学生信息。这种方式可能适用于查询条件就是两张表的关联字段,如果查询条件是其它字段的话,可能就不适用于这种了。**************************************************************************************************************------------------------------------------------第二种方式----------------------------------------------------**************************************************************************************************************第二种方式和第一种方式差不多,主要有以下几点的区别:1、还是TeacherMapper.xml的配置文件中的字段映射: <collection property="stuList" ofType="Student实体类路径" resultMap="StudentResultMap"/>2、这个时候,就不用写两个查询语句了,而且查询条件也可以是任意的字段了,只需要一个关联查询,将你想要的查出来就可以了 <select id = "queryAll" parameterType="**" resultMap="TeacherResultMap"> SELECT a.*, b.* FROM teacher a LEFT JOIN student b ON a.teacher_id = b.teacher_id WHERE 查询条件 </select>这种方式比第一种方式少了一个查询语句,而且查询条件也比较灵活了。
最后附上源文件的下载路径,欢迎下载:
源文件下载地址
阅读全文
0 0
- mybatis一对多的查询方法详解
- mybatis一对多查询
- mybatis一对多查询
- Mybatis一对多查询
- Mybatis 一对多 查询
- mybatis 一对多查询
- Mybatis 一对多 查询
- Mybatis一对多查询
- Mybatis一对多查询
- Mybatis(一对多查询)
- Mybatis的一对多查询中的问题
- mybatis一对多查询的注意事项
- mybatis一对多查询配置
- mybatis 嵌套查询,一对多
- Mybatis一对多关联查询
- mybatis 一对多,嵌套查询
- mybatis一对一,一对多查询
- mybatis教程--一对多查询
- 第十二周 项目 验证算法 (4)Floyd算法的验证
- vue开发中遇到的问题
- ROI Pooling
- 两种方法上传本地文件到github
- 第十一周 项目2
- mybatis一对多的查询方法详解
- OpenCV学习第十二篇:带透明通道图像合成(缩放,旋转,和ROI)
- WebSocket 在线测试
- java学习
- Oracle中跨服务器访问数据
- 第一次使用LoadRunner时遇到的问题
- 【开发笔记】C# MVC 后端执行Js并保留用户数据
- Makefile --使用变量
- Angular CLI简介2