<?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">
<!--namespace 命名空间-->
<mapper namespace="com.sf.mapper.OneToOneMapper">
    <!--
        resultMap
        作用是用来映射字段(Inter pid)和实体对象中属性(Person pid)的关系
        id 是唯一标识
    -->
    <resultMap id="oneToOne" type="com.sf.entity.Card">
        <!--设置关系的标签-->
        <!--
            id标签，设置主键关系
            column 属性指的是数据库表的字段名
            property 属性指的是Java实体类的属性名
        -->
        <id column="id" property="id"/>
        <!--
            result 标签 用来设置非主键关系
        -->
        <result column="number" property="number"/>
        <!--
            如果某个字段是外键：就是用association标签
            property="person" 被包含的对象的变量名
            javaType 被包含对象的类型
        -->
        <association property="person" javaType="com.sf.entity.Person">
            <id column="id" property="id"/>
            <result column="name" property="name"/>
            <result column="age" property="age"/>
        </association>
    </resultMap>

    <select id="selectAll" resultMap="oneToOne">
        SELECT c.id,c.number,p.id,p.name,p.age
        FROM person p,card c
        WHERE p.id=c.pid
    </select>
</mapper>