Mybatis-复杂查询

1.环境搭建

Student.java:
package com.kakafa.pojo;
import lombok.Data;
@Data
public class Student {
    private int id;
    private String name;
    //学生需要关联一个老师
    private Teacher teacher;
}
Teacher.java:
package com.kakafa.pojo;
import lombok.Data;
@Data
public class Teacher {
    private int id;
    private String name;
}
TeacherMapper:
package com.kakafa.dao;
import com.kakafa.pojo.Teacher;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface TeacherMapper {
    @Select("select * from mybatistest.teacher where id=#{tid}")
    Teacher getTeacher(@Param("tid") int id);
}
TeacherMapper.xml(这次把*Mapper.xml放到Resources的同名目录下):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kakafa.dao.TeacherMapper">
</mapper>
MyBatis-config.xml:
<!--注意这里报错Could not find resource com/kakafa/dao/*.xml,是因为他使用的是注解查询。注解查询mapper映射应该用class而不是用resource-->
    <mappers>
        <mapper class="com.kakafa.dao.TeacherMapper"/>
        <mapper class="com.kakafa.dao.StudentMapper"/>
    </mappers>
test:
<!--注意这里报错Could not find resource com/kakafa/dao/*.xml,是因为他使用的是注解查询。注解查询mapper映射应该用class而不是用resource-->
    <mappers>
        <mapper class="com.kakafa.dao.TeacherMapper"/>
        <mapper class="com.kakafa.dao.StudentMapper"/>
    </mappers>

2.多对一的处理
2.1子查询(嵌套):


2.2联表查询

3.一对多的处理
实体类环境改动:


3.1 联表查询
接口:

TeacherMapper.xml:

测试结果:

3.2 子查询(嵌套)

测试结果:


 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号