1. 程式人生 > 其它 >Mybatis-複雜查詢

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 子查詢(巢狀)

測試結果: