Mybatis 관련 조회 중 하나
먼저 두 장의 표(학생 표 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 관련 조회 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringMVC와 Mybatis 집합은 호출 저장 프로세스, 사무 제어 실례를 실현한다SSM 프레임워크에서 호출 데이터베이스의 저장 프로세스와 사무 제어에 자주 사용되는데 다음은 증빙서류를 저장하는 예를 들어 소개한다. 1. Oracle에 저장된 프로세스 코드는 다음과 같습니다(주요 논리는 증빙 서류...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.