多对一处理
按照查询嵌套处理
-
StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--(配置)--> <mapper namespace="dao.StudentMapper"> <select id="getStudent" resultMap="TecherStudent"> select * from student </select> <resultMap id="TecherStudent" type="student"> <id column="id" property="id"/> <result property="name" column="name"/> <!--复杂属性,我们需要单独处理 对象:association 集合:collection --> <association property="teacher" column="{ida,tid}" javaType="teacher" select="dao.TeacherMapper.getTeacher"/> </resultMap> </mapper>
-
TeacherMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--(配置)--> <mapper namespace="dao.TeacherMapper"> <select id="getTeacher" resultType="teacher"> select * from teacher where id=#{ida} </select> </mapper>
-
test
import dao.StudentMapper; import dao.TeacherMapper; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import pojo.Student; import pojo.Teacher; import util.Util; import java.util.List; public class test { @Test public void getT(){ SqlSession sqlSession= Util.getSqlSession(); TeacherMapper mapper=sqlSession.getMapper(TeacherMapper.class); Teacher teacher = mapper.getTeacher(1); System.out.println(teacher); sqlSession.close(); } @Test public void Student(){ SqlSession sqlSession = Util.getSqlSession(); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); List<Student> student = mapper.getStudent(); for (Student student1: student) { System.out.println(student1.toString()); } } }
按照结果嵌套查询
-
StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--(配置)--> <mapper namespace="dao.StudentMapper"> <select id="getStudent" resultMap="TecherStudent"> select * from student </select> <resultMap id="TecherStudent" type="student"> <id column="id" property="id"/> <result property="name" column="name"/> <!--复杂属性,我们需要单独处理 对象:association 集合:collection --> <association property="teacher" column="{ida,tid}" javaType="teacher" select="dao.TeacherMapper.getTeacher"/> </resultMap> <!--===========================================按照结果嵌套处理===============================================================》--> <select id="getStudent1" resultMap="TecherStudent1"> select s.id sid, s.name sname ,s.tid,t.id, t.name from student s, teacher t where s.tid=t.id </select> <resultMap id="TecherStudent1" type="student"> <id property="id" column="sid"/> <result property="name" column="sname"/> <result property="tid" column="tid"/> <association property="teacher" javaType="teacher"> <result column="id" property="id"/> <result column="name" property="name"/> </associatio> </resultMap> </mapper>
一对多处理
-
TeacherMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--(配置)--> <mapper namespace="dao.TeacherMapper"> <select id="getTeacher" resultType="teacher"> select * from teacher where id=#{ida} </select> <!-- ==============================按结果嵌套查询===============================================--> <select id="getTeacher1" resultMap="TeacherStudent"> select s.id sid,s.name sname, s.tid stid ,t.name tname,t.id tid from student s,teacher t where s.tid=t.id and t.id=#{tid} </select> <resultMap id="TeacherStudent" type="teacher"> <result property="id" column="tid"/> <result property="name" column="tname"/> <collection property="studentList" ofType="student"> <result column="sid" property="id"/> <result column="sname" property="name"/> <result column="stid" property="tid"/> </collection> </resultMap> <!-- ===================================按照查询嵌套处理=======================================--> <select id="getTeacher2" resultMap="TeacherStudent2"> select * from mybatis.teacher where id = #{tid} </select> <resultMap id="TeacherStudent2" type="Teacher"> <collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id"/> </resultMap> <select id="getStudentByTeacherId" resultType="Student"> select * from mybatis.student where tid = #{tid} </select> </mapper>
-
小结