SeouliteLab

[Java/자바] Spring에서 MySQL을 MyBatis로 연동하기 본문

프로그래밍

[Java/자바] Spring에서 MySQL을 MyBatis로 연동하기

Seoulite Lab 2024. 3. 8. 09:04

예제 1: Maven 프로젝트 생성

mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

먼저 Maven을 사용하여 기본적인 프로젝트를 생성합니다. groupId와 artifactId는 프로젝트에 맞게 설정합니다.

예제 2: pom.xml 파일에 MyBatis 및 MySQL Connector 의존성 추가

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version>
</dependency>

pom.xml 파일에 MyBatis 및 MySQL Connector의 의존성을 추가합니다. 현재 최신 버전을 사용하고 있습니다.

예제 3: 데이터베이스 연결 정보 설정

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
                <property name="username" value="root" />
                <property name="password" value="password" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml" />
    </mappers>
</configuration>

MyBatis 설정 파일인 `mybatis-config.xml`에 데이터베이스 연결 정보를 설정합니다. 데이터베이스 드라이버 클래스, URL, 사용자 이름 및 암호를 지정합니다.

예제 4: Mapper 인터페이스 및 XML 파일 생성

package com.example.mapper;

import java.util.List;
import com.example.model.User;

public interface UserMapper {
    List<User> getAllUsers();
}
<mapper namespace="com.example.mapper.UserMapper">
    <select id="getAllUsers" resultType="com.example.model.User">
        SELECT * FROM users
    </select>
</mapper>

Mapper 인터페이스와 XML 파일을 생성하여 MyBatis에서 데이터베이스 쿼리를 관리합니다. 위의 코드는 모든 사용자 정보를 가져오는 쿼리를 정의합니다.

예제 5: 서비스 및 컨트롤러 생성

package com.example.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.mapper.UserMapper;
import com.example.model.User;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public List<User> getAllUsers() {
        return userMapper.getAllUsers();
    }
}


package com.example.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.model.User;
import com.example.service.UserService;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }
}

서비스 및 컨트롤러를 생성하여 MyBatis와 연동된 데이터베이스 정보를 사용하여 데이터를 가져옵니다. UserService는 UserMapper를 주입받아 데이터베이스 쿼리를 호출하고, UserController는 UserService를 주입받아 RESTful 엔드포인트를 노출합니다.