目录
一、一对一
1、SQLMapper配置文件
- 在xml文件中去做映射;
- resultMap 标签里的 id 属性必须是唯一的,select 标签里 resultMap的值必须和 resultMap 标签里的 id 值一致;
- 一对一在resultMap标签中使用 assocation标签
- select标签里 id属性的值必须和对应Mapper 接口中对应方法的方法名一致且是唯一的。
<?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.ape.mapper.StudentMapper">
<resultMap type="Student" id="stu_class_Map">
<result column="sid" property="sid"/>
<result column="sname" property="sname"/>
<result column="birthday" property="birthday"/>
<result column="ssex" property="ssex"/>
<result column="classid" property="classid"/>
<association property="bj">
<result column="classid" property="classid"/>
<result column="classname" property="classname"/>
</association>
</resultMap>
<select id="findAllStudent" resultMap="stu_class_Map" >
select * from student
inner join class on student.classid = class.classid
</select>
</mapper>
2、注解
- 在 Mapper 接口中写相对应的注解去做映射;
- 一对一使用One注释。
package com.ape.mapper;
import java.util.List;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import com.ape.bean.Student;
public interface StudentMapper {
@Results({
@Result(column="classid",property = "classid"),
@Result(column = "classid",property = "bj"
one=@One(select="com.ape.mapper.BanjiMapper.findBanjiByclassid")
)
})
@Select("select * from student")
public List<Student> findAllStudent();
}
二、一对多
1、SQLMapper配置文件
-
在xml文件中去做映射;
- resultMap 标签里的 id 属性必须是唯一的,select 标签里 resultMap的值必须和 resultMap 标签里的 id 值一致;
- 一对一在resultMap标签中使用 collection标签
- select标签里 id属性的值必须和对应Mapper 接口中对应方法的方法名一致且是唯一的。
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ape.mapper.TeacherMapper">
<resultMap type="Teacher" id="tea_cou_Map">
<result column="tid" property="tid"/>
<result column="tname" property="tname"/>
<result column="tbirthday" property="tbirthday"/>
<result column="tsex" property="tsex"/>
<result column="temail" property="temail"/>
<result column="tmoney" property="tmoney"/>
<result column="taddress" property="taddress"/>
<collection property="clist" ofType="Course">
<result column="cid" property="cid"/>
<result column="cname" property="cname"/>
<result column="tid" property="tid"/>
</collection>
</resultMap>
<select id="findTeacherByTid" resultMap="tea_cou_Map" parameterType="int">
select * from teacher
left join course on teacher.tid = course.tid
where teacher.tid = #{v}
</select>
</mapper>
2、注释
- 在 Mapper 接口中写相对应的注解去做映射;
- 一对多使用Many注释。
package com.ape.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import com.ape.bean.Banji;
public interface BanjiMapper {
@Results({
@Result(column = "classid",property = "classid"),
@Result(column = "classid",property = "slist",
many=@Many(select = "com.ape.mapper.StudentMapper.findStudentByid")
)
})
@Select("select * from class")
public List<Banji> findAllByid(int classid);
}