<!-- OneToOneMapper.xml -->
<mapper namespace="com.itheima.table.OneToOneMapper">
<!--配置字段和实体对象属性的映射关系-->
<!--
<resultMap>:配置字段和对象属性的映射关系标签。
id 属性:唯一标识
type 属性:实体对象类型
column 属性:表中字段名称
property 属性: 实体对象变量名称
-->
<resultMap id="oneToOne" type="card">
<!-- id 标签:配置主键映射关系标签。 -->
<id column="cid" property="id" />
<!-- result 标签:配置非主键映射关系标签。 -->
<result column="number" property="number" />
<!--
association:配置被包含对象的映射关系
property:被包含对象的变量名
javaType:被包含对象的数据类型
-->
<!-- card类中有Person类对象p,即被包含 -->
<association property="p" javaType="person">
<!-- 即被包含的Person类对象p 有三个属性 -->
<id column="pid" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
</association>
</resultMap>
<select id="selectAll" resultMap="oneToOne">
SELECT c.id cid,number,pid,NAME,age FROM card c,person p WHERE c.pid=p.id
</select>
</mapper>
<!-- 对应java代码 -->
public interface OneToOneMapper {
public abstract List<Card> selectAll();
}
// 获取OneToOneMapper接口的实现类对象 接口代理
OneToOneMapper mapper = sqlSession.getMapper(OneToOneMapper.class);
// 调用实现类的方法,接收结果
List<Card> list = mapper.selectAll();
// 处理结果
for (Card c : list) {
System.out.println(c);
}
// 释放资源
sqlSession.close();
inputStream.close();
<!-- OneToManyMapper.xml -->
<mapper namespace="com.itheima.table.OneToManyMapper">
<resultMap id="oneToMany" type="classes">
<id column="cid" property="id"/>
<result column="cname" property="name"/>
<!--
collection:配置被包含的集合对象映射关系
property:被包含对象的变量名
ofType:被包含对象的实际数据类型
-->
<!-- 在class类中有List<Student>类型对象students,即包含集合-->
<collection property="students" ofType="student">
<id column="sid" property="id"/>
<result column="sname" property="name"/>
<result column="sage" property="age"/>
</collection>
</resultMap>
<select id="selectAll" resultMap="oneToMany">
SELECT c.id cid,c.name cname,s.id sid,s.name sname,s.age sage FROM classes c,student s WHERE c.id=s.cid
</select>
</mapper>
<!-- 对应java代码 -->
public interface OneToManyMapper {
public abstract List<Classes> selectAll();
}
// 获取OneToManyMapper接口的实现类对象
OneToManyMapper mapper = sqlSession.getMapper(OneToManyMapper.class);
// 调用实现类的方法,接收结果
List<Classes> classes = mapper.selectAll();
// 处理结果
for (Classes cls : classes) {
System.out.println(cls.getId() + "," + cls.getName());
List<Student> students = cls.getStudents();
for (Student student : students) {
System.out.println("\t" + student);
}
}
// 释放资源
sqlSession.close();
inputStream.close();
<!-- ManyToManyMapper.xml -->
<mapper namespace="com.itheima.table.ManyToManyMapper">
<resultMap id="manyToMany" type="student">
<id column="sid" property="id"/>
<result column="sname" property="name"/>
<result column="sage" property="age"/>
<!-- 在Student类中有List<Cource>类型对象courses,即包含集合-->
<collection property="courses" ofType="course">
<id column="cid" property="id"/>
<result column="cname" property="name"/>
</collection>
</resultMap>
<select id="selectAll" resultMap="manyToMany">
SELECT sc.sid,s.name sname,s.age sage,sc.cid,c.name cname FROM student s,course c,stu_cr sc WHERE sc.sid=s.id AND sc.cid=c.id
</select>
</mapper>
<!-- 对应java代码 -->
public interface ManyToManyMapper {
public abstract List<Student> selectAll();
}
// 获取ManyToManyMapper接口的实现类对象
ManyToManyMapper mapper = sqlSession.getMapper(ManyToManyMapper.class);
// 调用实现类的方法,接收结果
List<Student> students = mapper.selectAll();
// 处理结果
for (Student student : students) {
System.out.println(student.getId() + "," + student.getName() + "," + student.getAge());
List<Course> courses = student.getCourses();
for (Course cours : courses) {
System.out.println("\t" + cours);
}
}
// 释放资源
sqlSession.close();
inputStream.close();
6 MyBatis - 接口代理实现dao + 映射xml 开发 - 多表(案例)
原文:https://www.cnblogs.com/60kmph/p/14051524.html