

<!-- OneToOneMapper.xml -->
<mapper namespace="com.itheima.table.OneToOneMapper">
    <!--配置字段和实体对象属性的映射关系-->
    <!-- 
		<resultMap>:配置字段和对象属性的映射关系标签。
  		id 属性:唯一标识
  		type 属性:实体对象类型
  		column 属性:表中字段名称
  		property 属性: 实体对象变量名称
	-->
    <resultMap id="oneToOne" type="card">
        <!-- id 标签:配置主键映射关系标签。 -->
        <id column="cid" property="id" />
        <!-- result 标签:配置非主键映射关系标签。 -->
        <result column="number" property="number" />
        <!--
            association:配置被包含对象的映射关系
            property:被包含对象的变量名
            javaType:被包含对象的数据类型
        -->
        <!-- card类中有Person类对象p,即被包含 -->
        <association property="p" javaType="person">
            <!-- 即被包含的Person类对象p 有三个属性 -->
            <id column="pid" property="id" />
            <result column="name" property="name" />
            <result column="age" property="age" />
        </association>
    </resultMap>
    <select id="selectAll" resultMap="oneToOne">
        SELECT c.id cid,number,pid,NAME,age FROM card c,person p WHERE c.pid=p.id
    </select>
</mapper>
<!-- 对应java代码 -->
public interface OneToOneMapper {
    public abstract List<Card> selectAll();
}
// 获取OneToOneMapper接口的实现类对象  接口代理
OneToOneMapper mapper = sqlSession.getMapper(OneToOneMapper.class);
// 调用实现类的方法,接收结果
List<Card> list = mapper.selectAll();
// 处理结果
for (Card c : list) {
    System.out.println(c);
}
// 释放资源
sqlSession.close();
inputStream.close();


<!-- OneToManyMapper.xml -->
<mapper namespace="com.itheima.table.OneToManyMapper">
    <resultMap id="oneToMany" type="classes">
        <id column="cid" property="id"/>
        <result column="cname" property="name"/>
        <!--
            collection:配置被包含的集合对象映射关系
            property:被包含对象的变量名
            ofType:被包含对象的实际数据类型
        -->
        <!-- 在class类中有List<Student>类型对象students,即包含集合-->
        <collection property="students" ofType="student">
            <id column="sid" property="id"/>
            <result column="sname" property="name"/>
            <result column="sage" property="age"/>
        </collection>
    </resultMap>
    <select id="selectAll" resultMap="oneToMany">
        SELECT c.id cid,c.name cname,s.id sid,s.name sname,s.age sage FROM classes c,student s WHERE c.id=s.cid
    </select>
</mapper>
<!-- 对应java代码 -->
public interface OneToManyMapper {
    public abstract List<Classes> selectAll();
}
// 获取OneToManyMapper接口的实现类对象
OneToManyMapper mapper = sqlSession.getMapper(OneToManyMapper.class);
// 调用实现类的方法,接收结果
List<Classes> classes = mapper.selectAll();
// 处理结果
for (Classes cls : classes) {
	System.out.println(cls.getId() + "," + cls.getName());
	List<Student> students = cls.getStudents();
	for (Student student : students) {
    	System.out.println("\t" + student);
     }
}
// 释放资源
sqlSession.close();
inputStream.close();
<!-- ManyToManyMapper.xml -->
<mapper namespace="com.itheima.table.ManyToManyMapper">
    <resultMap id="manyToMany" type="student">
        <id column="sid" property="id"/>
        <result column="sname" property="name"/>
        <result column="sage" property="age"/>
        <!-- 在Student类中有List<Cource>类型对象courses,即包含集合-->
        <collection property="courses" ofType="course">
            <id column="cid" property="id"/>
            <result column="cname" property="name"/>
        </collection>
    </resultMap>
    <select id="selectAll" resultMap="manyToMany">
        SELECT sc.sid,s.name sname,s.age sage,sc.cid,c.name cname FROM student s,course c,stu_cr sc WHERE sc.sid=s.id AND sc.cid=c.id
    </select>
</mapper>
<!-- 对应java代码 -->
public interface ManyToManyMapper {
    public abstract List<Student> selectAll();
}
        
// 获取ManyToManyMapper接口的实现类对象
ManyToManyMapper mapper = sqlSession.getMapper(ManyToManyMapper.class);
// 调用实现类的方法,接收结果
List<Student> students = mapper.selectAll();
// 处理结果
for (Student student : students) {
   System.out.println(student.getId() + "," + student.getName() + "," + student.getAge());
   List<Course> courses = student.getCourses();
   for (Course cours : courses) {
       System.out.println("\t" + cours);
   }
}
// 释放资源
sqlSession.close();
inputStream.close();
6 MyBatis - 接口代理实现dao + 映射xml 开发 - 多表(案例)
原文:https://www.cnblogs.com/60kmph/p/14051524.html