基于mybatis的的单表多表查询resultMap用法

对应的老师实体类:

class Teacher{

public class Teacher {
    private int id1;
    private String name1;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

}

学生实体类:

public class Student {
    private int id;
    private String name;
    private int age;
    private Teacher teacher;

    private int tid;

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getTid() {
        return tid;
    }

    public void setTid(int tid) {
        this.tid = tid;
    }
}

对应的mybatis中teacherMapper.xml的写法:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="a.b">

<resultMap type="teacher" id="mymap">

<!--主键使用id配置映射关系-->

<id column="id" property="id1"/>

<!--其他列使用result标签配置映射关系,多个列就是用多个result标签-->

<result column="name1" property="name1"/>

</resultMap>
    <select id="selAll" resultMap="mymap">
    select * from teacher   
    </select>

<select id="selById" resultType="teacher" parameterType="int">

select * from  teacher where  id=#{0}

</select>

</mapper>

测试时,与使用autoMappering一样。

测试:

public class Test {
    public static void main(String[] args) throws IOException {
        InputStream is = (InputStream) Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory factory = (SqlSessionFactory) new SqlSessionFactoryBuilder().build(is);
        SqlSession session=factory.openSession();
        session.selectList("a.b.selAll");
        session.close();

使用resultMap实现关联单个对象(N+1方式查询)

n+1方式查询:先查出某个表的全部信息,根据这个表的信息查询另一个表的信息。
 

对应的mybatis中studentMapper.xml的写法:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="c.d">

<resultMap type="student" id="stumap">

<!--主键使用id配置映射关系-->

<id column="id" property="id"/>

<!--其他列使用result标签配置映射关系,多个列就是用多个result标签-->

<result column="name" property="name"/>

<result column="age" property="age"/>

<result column="tid" property="tid"/>

<!--如果关联一个对象用此标签-->

<association property="teacher" select="a.b.selById"  column="tid"></association>

<!--如果关联集合对象-->

<collection property=""></collection>

</resultMap>
    <select id="selAll" resultMap="stumap">
    select * from student 
    </select>
</mapper>

原文地址:https://www.cnblogs.com/aasu/p/11775018.html