时间:2023-01-05 11:09:45 | 栏目:JAVA代码 | 点击:次
数据库结构
tid是student的外键,是teacher表的id
JavaBean
public class Student { private int id; private String name; private Teacher teacher; } public class Teacher { private int id; private String name; }
mapper.java
public interface StudentMapper { List<Student> getStudent(); List<Student> getStudent2(); }
Student类里面有teacher,要想查出Student中的Teacher就需要映射。
方法有二
(1)
<select id="getStudent" resultMap="StudentTeacher"> select * from mybatis.student </select> <resultMap id="StudentTeacher" type="Student"> <result property="id" column="id"/> <result property="name" column="name"/> <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/> </resultMap> <!--子查询--> <select id="getTeacher" resultType="Teacher"> select * from mybatis.teacher where id=#{Anything} </select>
(2)
<select id="getStudent2" resultMap="StudentTeacher2"> select * from mybatis.student as s ,mybatis.teacher as t where s.tid=t.id </select> <resultMap id="StudentTeacher2" type="Student"> <result property="id" column="id"/> <result property="name" column="name"/> <association property="teacher" javaType="Teacher"> <result property="id" column="tid"/> <result property="name" column="name"/> </association> </resultMap>
JavaBean
public class Teacher2 { private int id; private String name; //一个老师对应多个学生 private List<Student2> students; } public class Student2 { private int id; private String name; private int tid; }
mapper.java
public interface TeacherMapper2 { List<Teacher2> getTeacher(@Param("id") int id); }
mapper.xml
<?xml version="1.0" encoding="GBK" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mybatis.DAO.TeacherMapper2"> <select id="getTeacher" parameterType="int" resultMap="teacherS"> select s.id, s.name, s.tid,t.id as tid, t.name as tname from mybatis.student as s ,mybatis.teacher as t where s.tid=t.id and t.id=#{id} </select> <resultMap id="teacherS" type="teacher2"> <result property="id" column="tid"/> <result property="name" column="tname"/> <collection property="students" ofType="student2"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="tid" column="tid"/> </collection> </resultMap> </mapper>