mybatis注解的详解和开发(增、删、改、查以及一对一、一对多/多对一、多对多( 四 )


创建学生实体类对象:
.java
package com.etime.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;import java.util.List;@AllArgsConstructor@NoArgsConstructor@Datapublic class Student implements Serializable {private int sid;private String sname;private int cid;private List studentCourseList;}
创建学生和课程的关系表的实体类:
.java
package com.etime.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@NoArgsConstructor@AllArgsConstructor@Datapublic class StudentCourse {private int scid;private int sid;private int courseid;private Course course;}
创建课程.java接口查询数据:
package com.etime.mapper;import com.etime.pojo.Course;import org.apache.ibatis.annotations.Select;public interface CourseMapper {//由课程id到课程表中进行查询课程信息@Select("select * from course where courseid=#{courseid}")Course getCourseByCourseid(int courseid);}
创建学生.java接口查询数据处理:
package com.etime.mapper;import com.etime.pojo.Classes;import com.etime.pojo.Student;import org.apache.ibatis.annotations.*;import java.util.List;public interface StudentMapper {//使用@Select查询所有学生信息//通过@Result注解中的属性many = @Many进行数据处理,将得到的课程对象返回到学生实体类对象studentCourseList中@Select("select * from student")@Results({@Result(property = "sid",column = "sid"),@Result(property = "sname",column = "sname"),@Result(property = "cid",column = "cid"),@Result(property = "studentCourseList",javaType = List.class,column = "sid",many = @Many(select = "com.etime.mapper.StudentCourseMapper.getStudentCourseBySid"))})List getStudentAndCourse();}
创建学生课程接口.java查询数据,对数据进行处理:
package com.etime.mapper;import com.etime.pojo.Course;import com.etime.pojo.StudentCourse;import org.apache.ibatis.annotations.One;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select;import java.util.List;public interface StudentCourseMapper {//@Select同样的通过注解的方式对数据进行全部查询,处理的通过id查询到的课程单个实体类@Select("select * from studentcourse where sid=#{sid}")@Results({@Result(property = "scid",column = "scid"),@Result(property = "sid",column = "sid"),@Result(property = "courseid",column = "courseid"),@Result(property = "course",javaType = Course.class,column = "courseid",one = @One(select = "com.etime.mapper.CourseMapper.getCourseByCourseid"))})//根据学生id查找所有课程对应的idList getStudentCourseBySid(int sid);}
通过上述的以系列操作,咱们是能够通过注解的方式查询到多对多的关系数据的:
运行结果如图: