강좌 일정에 데이터 대량 삽입

JavaBeginner
지금 연습하기

소개

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

👀 미리보기

MyBatis bulk insert preview

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 데이터베이스 서비스를 시작하고 MyBatisDemo 데이터베이스와 course 테이블을 생성하는 방법
  • MyBatisCourseDemo 프로젝트를 설정하는 방법
  • MyBatis 에서 <foreach> 태그를 사용하여 코스 데이터를 대량 삽입하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • MyBatis 를 사용하여 데이터베이스와 상호 작용
  • MyBatis 에서 <foreach> 태그를 사용하여 대량 데이터 삽입 수행
  • MyBatis 를 사용하여 Java 프로젝트를 설정하고 구성

데이터베이스 서비스 시작 및 강좌 테이블 생성

이 단계에서는 데이터베이스 서비스를 시작하고, MyBatisDemo 데이터베이스를 생성하고, course 테이블을 생성하고, 초기 데이터를 가져오는 방법을 배우게 됩니다.

  1. MySQL 데이터베이스 서비스 시작:
cd ~/project
sudo service mysql start
  1. SQL 스크립트를 실행하여 MyBatisDemo 데이터베이스와 course 테이블을 생성합니다:
mysql -u root < ~/project/course.sql && rm course.sql

이 명령은 ~/project/course.sql에 있는 SQL 스크립트를 실행하여 필요한 데이터베이스와 테이블을 생성합니다. 스크립트가 실행된 후 course.sql 파일은 삭제됩니다.

MyBatisCourseDemo 프로젝트 설정

이 단계에서는 과제를 완료하기 위한 기반으로 제공되는 MyBatisCourseDemo 프로젝트를 설정합니다.

  1. 프로젝트 디렉토리로 이동합니다:
cd ~/project/MyBatisCourseDemo/

강좌 데이터 대량 삽입 구현

이 단계에서는 MyBatis 의 <foreach> 태그를 사용하여 다음 세 개의 데이터를 코스 일정에 한 번에 (대량으로) 추가합니다.

  • 코스 ID: 8, 코스 이름: Golang Language, 강사: Amy
  • 코스 ID: 9, 코스 이름: Oracle, 강사: Bob
  • 코스 ID: 10, 코스 이름: Big Data, 강사: Jone
  1. /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);
}
  1. 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>
  1. /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();
    }

}
  1. 솔루션을 확인하기 위해 테스트 케이스를 실행합니다:
mvn test

출력 결과는 다음을 참조하십시오:

Unfinished test results

요약

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

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습