Mybatis 관련 조회 중 하나

6804 단어 Mybatis관련 검색
평소 개발 과정 에서 dao,bean,XML 파일 이 자동 으로 생 성 되 어 XML 의 설정 관 계 를 거의 쓰 지 않 습 니 다.오늘 은 my batis 의 관련 조회 에서 1 대 1 과 1 대 1 의 상황 을 기록 하 겠 습 니 다.
먼저 두 장의 표(학생 표 Student 과 선생님 Teacher 표,주:여 기 는 한 쌍 이 많 고 한 쌍 이 많은 상황 을 보 여주 기 위해 서 입 니 다.줄 을 서지 마 세 요)가 있 습 니 다.더 쉽게 이해 하기 위해 서 여 기 는 가장 간단 한 몇 개의 필요 한 필드 만 설정 되 어 있 습 니 다.표 구 조 는 아래 그림 과 같다.
학생 표:

Teacher 표:

실체 bean 만 들 기
 Teacher.java:

import java.util.List;

public class Teacher {

 private Integer id;
 private String name;
 private String className;
 private List<Student> students;

 // get、set    

}
Sfudent.java

public class Student {

 private Integer id;
 private String name;
 private Integer teacherId;
 private String className;
 private Teacher teacher;
 
 // get、set    
} 

다음 중점 이 있 습 니 다:Mapper.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.tz.mybatis.dao.studentDao"> 
 
 <!-- ///         /// -->
 <resultMap type="Teacher" id="teacherMap">
  <id column="id" property="id"/>
  <result column="name" property="name"/>
   <collection property="students" ofType="Student" column="id">
    <!--    column           ,        -->
  <id column="sid" property="id"/>
    <!-- property  JavaBean      -->
  <result column="sname" property="name"/>
  <result column="className" property="className"/>
  </collection>
 </resultMap>
 
 
 <!--                 -->
 <select id="getTeachers" parameterType="Teacher" resultMap="teacherMap">
 SELECT
 t.id,
 t.NAME,
 t.class_Name,
 s.id AS sid,
 s. NAME AS sname,
 s.class_name as className
 FROM
 teacher t
 LEFT JOIN student s ON t.id = s.teacher_id
 </select>
</mapper>
테스트 클래스:

package com.tz.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.tz.mybatis.bean.Student;
import com.tz.mybatis.bean.Teacher;

public class TeacherTest {

 private SqlSessionFactory sqlSessionFactory;
 
 @Before
 public void init() throws IOException {
 String resource = "mybatis-config.xml";
 InputStream inputStream = Resources.getResourceAsStream(resource);
 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 }
 
 @Test
 public void getTeachers() {
 SqlSession session = sqlSessionFactory.openSession();
 List<Teacher> list = session.selectList("com.tz.mybatis.dao.studentDao.getTeachers");
 System.out.println(list);
 }
 
}
다음은 두 번 째 표기 법 을 드 리 겠 습 니 다.

<!-- //         / -->
 <resultMap type="Teacher" id="teacherMaps">
 <id column="id" property="id"/>
 <result column="name" property="name"/>
 <result column="class_name" property="className"/>
 <collection property="students" ofType="Student" select="getStudents" column="id">
 </collection>
 </resultMap>
 
 
 <!--                 -->
 <select id="getAllTeacher" parameterType="Teacher" resultMap="teacherMaps">
 SELECT
 t.id,
 t.NAME,
 t.class_name
 FROM
 teacher t
 </select>
 
 <select id="getStudents" parameterType="int" resultType="Student">
 select 
 s.id,
 s. NAME,
 s.class_name as className
 from student s
 where teacher_id = #{id}
 </select>
테스트 클래스:

@Test
 public void getTeachers2() {
 SqlSession session = sqlSessionFactory.openSession();
 List<Teacher> list = session.selectList("com.tz.mybatis.dao.studentDao.getAllTeacher");
 System.out.println(list);
 }
학생 정보 조회(1 대 1):
우선 설정 파일:

<resultMap type="Student" id="studentMap">
 <id column="id" property="id"/>
 <result column="name" property="name"/>
 <result column="class_name" property="className"/>
 <result column="teacher_id" property="teacherId"/>
 <association property="teacher" select="getTeacher" column="teacher_id" javaType="Teacher">
 <!--        column    student    ,         -->
 </association>
 </resultMap>
 
 
 <select id="getStudent" resultMap="studentMap">
 SELECT
 s.id,
 s.name,
 s.class_name,
 s.teacher_id
 FROM
 student s
 </select>
 
 <select id="getTeacher" resultType="Teacher" parameterType="int">
 SELECT
 t.id,
 t.name,
 t.class_name as className 
 FROM teacher t 
 where id = #{teacher_id}
 </select>
테스트 클래스:

@Test
 public void getStudents() {
 SqlSession session = sqlSessionFactory.openSession();
 List<Student> list = session.selectList("com.tz.mybatis.dao.studentDao.getStudent");
 System.out.println(list);
 }
마지막:물론 이렇게 번 거 로 운 정 보 를 설정 하지 않 으 려 면 검색 과 관련 된 SQL 문 구 를 직접 작성 하고 결 과 를 되 돌려 주 는 것 은 Map 에서 받 아들 이면 됩 니 다.하지만 이 는 대상 을 향 한 이념 에 맞지 않 는 다. 
Mybatis 관련 조회 중 하나 인 다 대 1 XML 설정 에 대한 자세 한 내용 은 여기까지 소개 되 었 습 니 다.더 많은 Mybatis 관련 조회 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기