MyBatis 一对一

来源:互联网 发布:古兰经软件哪个好 编辑:程序博客网 时间:2024/05/16 00:28

一个人对应一个身份证。一对一关系可以使用唯一主外键关联,即2张表使用外键关联。 由于一对一关联,所以还要个外键添加unique约束。

Person类:

public class Person implements Serializable {    private Integer id;    private String name;    private String sex;    private Integer age;    private Card card;    //...}

Card类:

public class Card implements Serializable {    private Integer id;    private String code;    //...}

CardMapper映射器:

<?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="Item10x1.CardMapper">    <select id="selectCardById" parameterType="int" resultType="Item10x1.Card">        select * from tb_card where id = #{id}    </select></mapper>

PersonMapper映射器:

<?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="Item10x1.PersonMapper">    <resultMap id="personMapper" type="Item10x1.Person">        <id property="id" column="id"/>        <result property="name" column="name"/>        <result property="sex" column="sex"/>        <result property="age" column="age"/>        <association property="card" column="card_id" javaType="Item10x1.Card"                     select="Item10x1.CardMapper.selectCardById"/>    </resultMap>    <select id="selectPersonById" parameterType="int" resultMap="personMapper">        select * from tb_person where id = #{id}    </select></mapper>
  • <association property="card" column="card_id" javaType="Item10x1.Card"
    select="Item10x1.CardMapper.selectCardById"/>
    : 指定一对一关联关系,propertyPerson类的card属性,column为表的属性,javaType指定类型,select表示执行CardMapper中的selectCardById,将获得数据封装到Card作为Person属性card的值。
  • resultMap="personMapper":指定映射结果集。

不要忘了在MyBatis配置中添加映射器。

PersonMapper接口:

public interface PersonMapper {    public Person selectPersonById(int id);}
  • PersonMapper.xmlnamespace要和该接口的所在位置相同。
  • 该接口的方法必须在PersonMapper.xml有对应的id

测试代码:

        SqlSession sqlSession = SqlSessionFactoryUtil.getSqlSession();        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);        Person person = personMapper.selectPersonById(1);        System.out.println(person);        System.out.println(person.getCard());        sqlSession.close();
0 0