一对一是一种特殊的多对一。

一般箭头所指的方向,是一,背对箭头的是多。

由于身份证表的人员编号即使主键也是外键,所以这是一对一的关系。pk是主键,fk是外键。

在Person.java类中添加一行 private IdCard ic; 并生成setter getter。

xml在PersonMapper中写

    <!-- 一对一查询
        association:一对一和多对一的时候用
        property:多对一中“一”的那个属性名
        javaType:property中那个变量的数据类型
    -->    
    <resultMap type="xxx.x.Person" id="selectIdCardByPersonIdRM" extends="BaseResultMap">
        <association property="ic" javaType="xxx.x.model.IdCard">
            <id column = "person_id" property = "personId" />
            <result column = "card_no" property = "cardNo" />
        </association>
    </resultMap>
    <select id="selectIdCardByPersonId" parameterType="int" resultMap="selectIdCardByPersonIdRM">
        select * from person p, id_card ic where p.PERSON_ID = ic.PERSON_ID and p.PERSON_ID = #{personId}
    </select>
    SqlSessionFactory sessionFactory;
    public void setUp() throws Exception {
        InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
        sessionFactory = new SqlSessionFactoryBuilder().build(in);
    }
    public void selectIdCardByPersonId() {
        // 创建SqlSession
        SqlSession session = sessionFactory.openSession();
        try {
            Person person = session.selectOne("xxx.x.mapper.OrdersMapper.selectIdCardByPersonId", 1);
            System.out.println(person);
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();
        } finally {
            session.close();
        }
    }

都和多对一一样

 

posted on 2018-05-10 15:05  lonske  阅读(147)  评论(0编辑  收藏  举报