1、使用的数据脚本为:
DROP DATABASE IF EXISTS mybatisdb ;
CREATE DATABASE mybatisdb CHARACTER SET UTF8 ;
USE mybatisdb ;
-- 创建数据表
CREATE TABLE member_login (
mid VARCHAR(50) ,
password VARCHAR(50) ,
CONSTRAINT pk_mid PRIMARY KEY(mid)
) ;
CREATE TABLE member_details (
mid VARCHAR(50) ,
name VARCHAR(50) ,
age INT ,
CONSTRAINT pk_mid2 PRIMARY KEY(mid) ,
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member_login(mid) ON DELETE CASCADE
) ;
2、准备好对应的vo类
public class MemberLogin implements Serializable {
private String mid ;
private String password ;
private MemberDetails details ;
}
public class MemberDetails implements Serializable {
private String mid ;
private String name ;
private Integer age ;
private MemberLogin login ;
}
//省略set和get方法
3、准备MyBatis需要的配置文件;
创建MemberLogin.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">
<mapper namespace="vo.mapping.MemberLoginNS">
<resultMap type="MemberLogin" id="MemberLoginMap">
<id column="mid" property="mid" />
<result column="password" property="password" />
</resultMap>
</mapper>
创建MemberDetails.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">
<mapper namespace="vo.mapping.MemberDetailsNS">
<resultMap type="MemberDetails" id="MemberDetailsMap">
<id column="mid" property="mid" />
<result column="name" property="name" />
<result column="age" property="age" />
</resultMap>
</mapper>
定义操作别名和映射路径
<typeAliases>
<typeAlias type="cn.mldn.vo.MemberLogin" alias="MemberLogin"/>
<typeAlias type="cn.mldn.vo.MemberDetails" alias="MemberDetails"/>
</typeAliases>
<mapper namespace="vo.mapping.MemberLoginNS"/>
4、一对一的关系匹配关键在于MemberLogin.xml 与MemberDetails.xml 文件上。
· 修改MemberLogin.xml 文件,追加resultMap 的映射:
<resultMap type="MemberLogin" id="MemberLoginMap">
<id column="mid" property="mid" />
<result column="password" property="password" />
<association property="details" javaType="MemberDetails" column="mid" select="vo.mapping.MemberDetailsNS.findById" />
</resultMap>