<?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="com.mapper.IdCardMapper">
<!-- 根据Id查询证件信息 -->
<select id="findIdCardById" parameterType="Integer" resultType="IdCard">
select * from tb_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">
<mapper namespace="com.mapper.PersonMapper">

<!-- 根据Id查询证件信息、嵌套查询 -->
<resultMap type="Person" id="IdCardWithPersonResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<result property="sex" column="sex"/>
<!-- 一对一关联关系 -->
<association property="card" column="card_id" javaType="IdCard"
select="com.mapper.IdCardMapper.findIdCardById"/>
</resultMap>
<select id="findPersonById" parameterType="Integer" resultMap="IdCardWithPersonResult">
select * from tb_person where id=#{id}
</select>
</mapper>

⑥ 在com.test包下创建测试类
public class Test {
@ Test
public void testOneToOne(){
SqlSession sqlSession=MybatisUtil.getSession();
Person person=sqlSession.selectOne("com.mapper.PersonMapper." +
"findPersonById", 1);
System.out.println(person);
sqlSession.close();
}

二、 实验内容②参考实验内容①,但需要注意的是第⑤步骤中,映射文件配置,参考如下:
<?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="com.mapper.UserMapper">
<!-- 一对多:查看某一用户及其关联的订单信息 -->
<resultMap type="User" id="UserWithOrdersResult">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="address" column="address"/> <collection property="ordersList" ofType="Orders">
<id property="id" column="orders_id"/>
<result property="number" column="number"/>
</collection>
</resultMap>
<select id="findUserWithOrders" parameterType="Integer" resultMap="UserWithOrdersResult">
select u.*,o.id as orders_id,o.number
from tb_user u,tb_orders o
where u.id=o.user_id and u.id=#{id}
</select>
</mapper>




自己写:

<mapper namespace="com.bean.userBeanUser">
<resultMap type="com.bean.UserBean" id="UserBean">
<id property="u_id" column="u_id"/>
<result property="u_username" column="u_username"/>
<result property="u_password" column="u_password"/>
<!-- 一对一 用户和身份证的一对一 的查询 -->
<!-- property -->
<association property="phone" column="u_id" javaType="com.bean.PhoenBean"
select="findPhoneId"></association>
</resultMap>



<select id="findPhoneId" parameterType="Integer" resultType="com.bean.PhoenBean">
select * from t_phone where u_id=#{u_id}
</select>
<select id="selectAllOneAndOne" resultMap="UserBean">
select * from t_user
</select>


<!-- 一对多 -->
<resultMap type="com.bean.Student" id="student">
<id property="s_id" column="s_id"/>
<result property="s_name" column="s_name"/>
<result property="s_sex" column="s_sex"/>
<collection property="score" column="score" ofType="com.bean.Score" >
<id property="sc_id" column="sc_id"/>
<result property="sc_c_name" column="sc_c_name"/>
<result property="s_id" column="s_id"/>
<result property="sc_number" column="sc_number"/>
</collection>
</resultMap>

<select id="selectStudent" resultMap="student">
select s.*,sc.*
from student_table s,score_table sc
where s.s_id=sc.s_id
</select>
</mapper>


java里面的bean

Student.java

package com.bean;

import java.util.List;

public class Student {
private Integer s_id ;
private String s_name ;
private String s_sex ;
List<Score> score;
public Student(Integer s_id, String s_name, String s_sex) {
super();
this.s_id = s_id;
this.s_name = s_name;
this.s_sex = s_sex;
}
public Student(String s_name, String s_sex) {
super();
this.s_name = s_name;
this.s_sex = s_sex;
}
public Student() {
super();
}
public Integer getS_id() {
return s_id;
}
public void setS_id(Integer s_id) {
this.s_id = s_id;
}
public String getS_name() {
return s_name;
}
public void setS_name(String s_name) {
this.s_name = s_name;
}
public String getS_sex() {
return s_sex;
}
public void setS_sex(String s_sex) {
this.s_sex = s_sex;
}

public List<Score> getScore() {
return score;
}
public void setScore(List<Score> score) {
this.score = score;
}
@Override
public String toString() {
return "Student [s_id=" + s_id + ", s_name=" + s_name + ", s_sex="
+ s_sex + ", score=" + score + "]";
}


}

Score.java

package com.bean;

public class Score {
private Integer sc_id ;
private String sc_c_name ;
private Integer s_id ;
private Integer sc_number ;
public Score(Integer sc_id, String sc_c_name, Integer s_id,
Integer sc_number) {
super();
this.sc_id = sc_id;
this.sc_c_name = sc_c_name;
this.s_id = s_id;
this.sc_number = sc_number;
}
public Score(String sc_c_name, Integer s_id, Integer sc_number) {
super();
this.sc_c_name = sc_c_name;
this.s_id = s_id;
this.sc_number = sc_number;
}
public Score() {
super();
}
public Integer getSc_id() {
return sc_id;
}
public void setSc_id(Integer sc_id) {
this.sc_id = sc_id;
}
public String getSc_c_name() {
return sc_c_name;
}
public void setSc_c_name(String sc_c_name) {
this.sc_c_name = sc_c_name;
}
public Integer getS_id() {
return s_id;
}
public void setS_id(Integer s_id) {
this.s_id = s_id;
}
public Integer getSc_number() {
return sc_number;
}
public void setSc_number(Integer sc_number) {
this.sc_number = sc_number;
}
@Override
public String toString() {
return "Score [sc_id=" + sc_id + ", sc_c_name=" + sc_c_name + ", s_id="
+ s_id + ", sc_number=" + sc_number + "]";
}

}