(一)关联关系概述
(二)一对一实例演示
项目文件结构图
01创建t_idcard和t_person数据表
CREATE TABLE `t_idcard` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO `t_idcard` VALUES ('1', '4319090909090');
INSERT INTO `t_idcard` VALUES ('2', '4301919191919191');
----------
CREATE TABLE `t_person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`card_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_card` (`card_id`),
CONSTRAINT `t_person_ibfk_1` FOREIGN KEY (`card_id`) REFERENCES `t_idcard` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO `t_person` VALUES ('1', '张三', '1');
INSERT INTO `t_person` VALUES ('2', '李四', '2');
02.创建表对应的 JavaBean 对象
IdCard.java类的代码如下:
package com.wang.po;
public class IdCard {
private int id;
private String code;
----省略setter和getter----
@Override
public String toString() {
return "IdCard [id=" + id + ", code=" + code + "]";
}
}
Person.java类的代码如下:
package com.wang.po;
public class Person {
private int id;
private String name;
private IdCard card;
----省略setter和getter----
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", card=" + card + "]";
}
}
03.在Mapper.xml编写SQL语句
IdCardMapper.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">
<!-- namespace+id确定一条SQL语句 -->
<mapper namespace="com.wang.mapper.IdCardMapper">
<select id="findCodeById" parameterType="Integer"
resultType="com.wang.po.IdCard">
select*from t_idcard where id=#{id}
</select>
</mapper>
PersonMapper.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">
<!-- namespace+id确定一条SQL语句 -->
<mapper namespace="com.wang.mapper.PersonMapper">
<select id="findPersonById" parameterType="Integer"
resultMap="IdCardWithPersonResult">
select*from t_person where id=#{id}
</select>
<resultMap type="com.wang.po.Person" id="IdCardWithPersonResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="card" column="card_id"
javaType="com.wang.po.IdCard"
select="com.wang.mapper.IdCardMapper.findCodeById"/>
</resultMap>
</mapper>
04.测试程序运行
package com.wang.Test;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.wang.Utils.MybatisUtils;
import com.wang.po.Person;
public class MybatisTest {
@Test
public void findCustomerByName() {
SqlSession sqlSession = MybatisUtils.getSession();
Person p=sqlSession.selectOne("com.wang.mapper.PersonMapper.findPersonById",1);
System.out.println(p);
sqlSession.close();
}
}
05.结果
DEBUG [main] - ==> Preparing: select*from t_person where id=?
DEBUG [main] - ==> Parameters: 1(Integer)
DEBUG [main] - ====> Preparing: select*from t_idcard where id=?
DEBUG [main] - ====> Parameters: 1(Integer)
DEBUG [main] - <==== Total: 1
DEBUG [main] - <== Total: 1
Person [id=1, name=张三, card=IdCard [id=1, code=4319090909090]]