复杂方法
两个实体类
Student
@Data @NoArgsConstructor @AllArgsConstructor public class Student { private int id; private String name; private Teacher teacher; }
Teacher
@Data @NoArgsConstructor @AllArgsConstructor public class Teacher { private int id; private String name; }
@Data @NoArgsConstructor @AllArgsConstructor这三个注解为了生成构造方法和get、set
两个表
StudentMapper.java接口
List<Student> queryStudent(); Teacher getTeacher(@Param("id")int id);
StudentMapper.xml
<resultMap id="studentTeacher" type="com.shuo.pojo.Student"> <result column="id" property="id"></result> <result column="name" property="name"></result> <association column="tid" property="teacher" javaType="com.shuo.pojo.Teacher" select="getTeacher"/> </resultMap> <select id="queryStudent" resultMap="studentTeacher"> select * from student </select>做Student的查询 <select id="getTeacher" resultType="com.shuo.pojo.Teacher"> select * from teacher where id=#{id} </select>做teacher的查询根据id因为数据库表里是int tid
测试类
@Test public void stuter(){ SqlSession session = MybatisUtils.getsqlsession(); StudentMapper studentMapper = session.getMapper(StudentMapper.class); List<Student> students = studentMapper.queryStudent(); for (Student student : students) { System.out.println(student); } session.close(); }
简单点方法
表、实体类相同
接口只需要
List<Student> queryStudent();
Mapper.xml
<select id="queryStudent" resultMap="StudentTeacher2"> select s.id sid,s.name sname,t.name tname from student s,teacher t where s.tid=t.id </select> <resultMap id="StudentTeacher2" type="com.shuo.pojo.Student"> <result property="id" column="sid"></result> <result property="name" column="sname"></result> <association property="teacher" javaType="com.shuo.pojo.Teacher"> <result property="name" column="tname"/> </association> </resultMap>
测试类相同