소개
이 프로젝트에서는 인기 있는 Java 영속성 프레임워크인 MyBatis 를 사용하여 코스 스케줄에 데이터를 대량 삽입하는 방법을 배우게 됩니다. 이 프로젝트는 데이터베이스 설정, 필요한 테이블 생성, 대량 삽입 기능 구현 과정을 안내합니다.
👀 미리보기

🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 데이터베이스 서비스를 시작하고
MyBatisDemo데이터베이스와course테이블을 생성하는 방법 MyBatisCourseDemo프로젝트를 설정하는 방법- MyBatis 에서
<foreach>태그를 사용하여 코스 데이터를 대량 삽입하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- MyBatis 를 사용하여 데이터베이스와 상호 작용
- MyBatis 에서
<foreach>태그를 사용하여 대량 데이터 삽입 수행 - MyBatis 를 사용하여 Java 프로젝트를 설정하고 구성
데이터베이스 서비스 시작 및 강좌 테이블 생성
이 단계에서는 데이터베이스 서비스를 시작하고, MyBatisDemo 데이터베이스를 생성하고, course 테이블을 생성하고, 초기 데이터를 가져오는 방법을 배우게 됩니다.
- MySQL 데이터베이스 서비스 시작:
cd ~/project
sudo service mysql start
- SQL 스크립트를 실행하여
MyBatisDemo데이터베이스와course테이블을 생성합니다:
mysql -u root < ~/project/course.sql && rm course.sql
이 명령은 ~/project/course.sql에 있는 SQL 스크립트를 실행하여 필요한 데이터베이스와 테이블을 생성합니다. 스크립트가 실행된 후 course.sql 파일은 삭제됩니다.
MyBatisCourseDemo 프로젝트 설정
이 단계에서는 과제를 완료하기 위한 기반으로 제공되는 MyBatisCourseDemo 프로젝트를 설정합니다.
- 프로젝트 디렉토리로 이동합니다:
cd ~/project/MyBatisCourseDemo/
강좌 데이터 대량 삽입 구현
이 단계에서는 MyBatis 의 <foreach> 태그를 사용하여 다음 세 개의 데이터를 코스 일정에 한 번에 (대량으로) 추가합니다.
- 코스 ID: 8, 코스 이름: Golang Language, 강사: Amy
- 코스 ID: 9, 코스 이름: Oracle, 강사: Bob
- 코스 ID: 10, 코스 이름: Big Data, 강사: Jone
/src/main/java/org/labex/mapper/디렉토리에서CourseMapper.java파일을 열고 다음 코드를 추가합니다:
package org.labex.mapper;
import java.util.List;
import org.labex.pojo.Course;
public interface CourseMapper {
void insertCourses(List<Course> courses);
}
CourseMapper.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="org.labex.mapper.CourseMapper">
<insert id="insertCourses" parameterType="java.util.List">
INSERT INTO course (cNo, cName, teacher)
VALUES
<foreach collection="list" item="course" separator=",">
(#{course.cNo}, #{course.cName}, #{course.teacher})
</foreach>
</insert>
</mapper>
/src/test/java/org/labex/test/디렉토리에서MyBatisTest.java파일을 열고 다음 코드를 추가합니다:
package org.labex.test;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
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 org.labex.mapper.CourseMapper;
import org.labex.pojo.Course;
public class MyBatisTest {
SqlSessionFactory sessionFactory = null;
SqlSession session = null;
@Before
public void before() throws IOException {
String resource = "mybatis-config.xml";
// Load MyBatis configuration file
Reader reader = Resources.getResourceAsReader(resource);
// Create SqlSessionFactory
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// Create SqlSession object to execute SQL statements defined in the mapping files
session = sessionFactory.openSession();
}
@Test
public void testInsertCourses() {
// Create a list of Course objects to be inserted
List<Course> courses = new ArrayList<>();
courses.add(new Course(8, "Golang Language", "Amy"));
courses.add(new Course(9, "Oracle", "Bob"));
courses.add(new Course(10, "Big Data", "Jone"));
// Get the CourseMapper instance
CourseMapper courseMapper = session.getMapper(CourseMapper.class);
// Call the insertCourses method with the list of courses
courseMapper.insertCourses(courses);
// Commit the transaction
session.commit();
// Close the session
session.close();
}
}
- 솔루션을 확인하기 위해 테스트 케이스를 실행합니다:
mvn test
출력 결과는 다음을 참조하십시오:

요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



