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

getAllStudent();}
在.java中使用注解的方式根据班级id查询班级的相关信息
.java
package com.etime.mapper;import com.etime.pojo.Classes;import org.apache.ibatis.annotations.Select;public interface ClassesMapper {//使用@Select注解的方式通过查询返回值为班级对象给到学生实体类做数据处理的StudentMapper接口的one = @One处理@Select("select * from classes where cid=#{cid}")Classes getClassesByCid(int cid);}
编写测试:
@Testpublic void t08(){SqlSession sqlSession = sqlSessionUtil.getSqlSession();StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);List list = studentMapper.getAllStudent();list.forEach(System.out::println);sqlSession.close();}

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

文章插图
由上面的准备我们将测试多对一查询的情况:
反过来进行一对多情况
对代码进行修改测试查看是否书写更简便些
修改学生实体类:
.java
【mybatis注解的详解和开发(增、删、改、查以及一对一、一对多/多对一、多对多】package com.etime.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@AllArgsConstructor@NoArgsConstructor@Datapublic class Student {private int sid;private String sname;private int cid;}
对班级实体类进行修改
.java
package com.etime.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.util.List;@NoArgsConstructor@AllArgsConstructor@Datapublic class Classes {private int cid;private String cname;List stuList;}
对学生类的数据获取接口做修改
public interface StudentMapper {//使用@Select查询所有学生信息@Select("select * from student where cid=#{cid}")Student getStudentByCid(int cid);}
对班级类进行数据获取进行数据处理
package com.etime.mapper;import com.etime.pojo.Classes;import org.apache.ibatis.annotations.Many;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select;import java.util.List;public interface ClassesMapper {//使用@Select注解的方式通过查询返回值为学生对象给到班级实体类做数据处理的ClassesMapper接口的many = @Many多条数据处理//其实由这里可以看出来多对一和一对多是差不多的看是哪一个为主体//这里返回来处理的是集合所以javaType给到的是List.call 数据做处理的也是@Many注解(注意many=@Many别误解为多对多)@Select("select * from classes")@Results({@Result(property = "cid",column = "cid"),@Result(property = "cname",column = "cname"),@Result(property = "stuList",javaType = List.class,column = "cid",many = @Many(select = "com.etime.mapper.StudentMapper.getStudentByCid"))})List getAllClasses();}
由上可知的一对多的方式进行的数据查询可以看出,其实两种方式都差不多,只是看是怎么看他们之间的关系型,以谁为主体
运行结果:
由上面的关系可知在开发中常见的还属是多对多的关系,接下来进行注解的测试对多对多关系的测试
多对多关系注解方式的查询数据:
众所周知的学生和课程之间是常见的多对多的关系,接下来就以学生关系来测试多对多的关系
创建课程实体类:
package com.etime.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@AllArgsConstructor@Data@NoArgsConstructorpublic class Course {private int courseid;private String coursename;}