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 子查询(嵌套)

测试结果:


posted @ 2021-12-23 16:41  卡卡发  阅读(80)  评论(0)    收藏  举报