前提:
现在有两张表,学生表跟教师表,一个教师对应多个学生
教师表: CREATE TABLE `teacher` ( `id` int(11) , `name` varchar(20) , `age` int(11) , `address` varchar(100) , PRIMARY KEY (`id`) ) 学生表: CREATE TABLE `student` ( `id` int(11) , `ter_id` int(10) , `name` varchar(255) , `phone` varchar(255) , `address` varchar(255) , `birthDay` date , PRIMARY KEY (`id`) )
方式一:
1.直接写多表联合查询sql,mapper文件对应好相应的实体类即可。
需要注意的两个点:
A.用分页插件pageHelper的时候,该种方式会导致查询错乱。
B.如果几个表有字段名相同的情况,字段赋值可能被覆盖。我们可以给字段取别名的方式来解决,如下:
SELECT tea.id, tea.NAME, tea.age, tea.address, stu.id stu_id, stu.ter_id stu_ter_id, stu.NAME stu_name, stu.phone stu_phone, stu.address stu_address, stu.birthday stu_birthday FROM teacher tea, student stu WHERE tea.id = stu.ter_id
2.具体实现代码:
实体类Teacher.java 和 Student.java:
package com.shushan.entity; import java.util.List; public class Teacher { private Integer id; private String name; //姓名 private Integer age; //年龄 private String address; //地址 private List
stuList; //学生集合 setter方法... getter方法... }
package com.shushan.entity; import java.util.Date; public class Student { private Integer id; private Integer terId; //教师id private String name; //姓名 private String phone; //电话 private String address; //地址 private Date birthDay; //生日 setter方法... getter方法... }
mapper.xml文件
dao层代码:
package com.shushan.dao; import com.shushan.entity.Teacher; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface UserMultipleDao { / * 一对多查询:方式一 * @param teacher * @return */ public List
getTeacherList(Teacher teacher); }
方式二:
1.采用子查询的方式。mapper.xml中对应好主表跟次表查询关系。
2.代码实现
实体类Teacher.java 和 Student.java:
详细见方式一
mapper.xml
dao层代码:
package com.shushan.dao; import com.shushan.entity.Teacher; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface UserMultipleTwoDao { / * 一对多查询:方式二 * @param teacher * @return */ public List
getTeacherTwoList(Teacher teacher); }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202156.html原文链接:https://javaforall.net
