SpringBoot에서 MySQL(MyBatis)에 연결하는 API를 만들어 보았습니다.

개요


제목과 같이 SpringBoot에서 만든 Java 응용 프로그램에서 MySQL에 연결하고 싶습니다.
O/R 매핑기는 MyBatis를 사용합니다. ※제 바티스는요.
실제환경을 구축해 봤어요.에 부합되는 후속
전제 환경에 관해서는 저쪽을 참고하세요.
만약 연결이 안 되는 상황이 더 있다면 마음대로 평론해 주십시오.

본론


그럼 여기서 본론으로 들어가자.
이번에는 간단히 말해 GET 요청을 보내면 목록에서 DB의 모든 데이터를 얻을 수 있는 API를 만듭니다.
표명과 테스트 데이터는 여기를 포함하는 전제 조건이다.

1. API 제작 준비


1-1. 의존 항목 추가


단지 지난번 환경 구축 의존이 부족했기 때문에 추가 의존을 하자.
사용이 편리함SpringInitializer.
MySQL, MyBatis에 웹 및 Lombok을 추가하고 Generate Project를 클릭합니다. ※Lombok이란?

다운로드한 zip에서build까지.프로젝트의build.우리gradle로 복사합시다.
신중을 기하기 위해서도 쇄신을 해야 한다.

순조롭게 의존을 얻었다.

1-2. IntelliJ 플러그인 구성


이어서 IntelliJ 옆에 있는 플러그인을 만지작거립니다.
Ctrl + Alt + S에서 설정을 열고 Plugins 하단의 Browse repositories...버튼을 클릭하여 대화 상자를 닫습니다.

lombok을 검색하면 Lombok Plugin이 나타나므로 Install을 클릭하여 설치합니다.

설치가 가능하다면 Install 문자가 Restart IntelliJ IDEA를 대신할 것 같아서 다시 시작하려면 누르십시오.
다시 켜면 오케이!
준비 완료!
그럼 프로그래밍에 들어가자!

2. API 만들기


이번에는 컨트롤러와 맵만 간단하게 설정해 보세요.(데이터 클래스 등이 있지만)
소스에 대해 깊이 설명하지 않는 방침이니 양해 부탁드립니다.

2-1. 컨트롤러 주위


com.example.sampleapi.controller.SampleController.java
@RestController
@RequiredArgsConstructor
public class SampleController {
    private final UsersMapper usersMapper;  // (1)

    @GetMapping("/get/sample")
    public List<SampleResponse> getSample() {
        List<UsersEntity> usersEntityList = usersMapper.findUserList();  // (2)
        return usersEntityList.stream().map(SampleResponse::create).collect(Collectors.toList());  // (3)
    }
}
com.example.sampleapi.controller.resource.SampleResponse.java
@Value  // (4)
public class SampleResponse {
    private Integer userId;
    private String userName;

    public static SampleResponse create(UsersEntity entity) {  // (5)
        return new SampleResponse(
                entity.getUserId(),
                entity.getUserName()
        );
    }
}
간단한 설명.
(1). @RequiredArgsConstructorfinal 필드의 초기 값을 지정하는 구조 함수로 자동으로 생성됩니다.그러니까 구조 함수가 주입된 거죠?
(2). 호출 UsersMapper 은 DB에서 가져온 데이터를 실체 목록으로 수신합니다.
(3). (2)에서 받은 목록을 SampleResponse 클래스의 목록에 다시 불러옵니다.
(4). Lombok의 @Value 는 모든 필드를 초기화하는 구조 함수와 getter를 자동으로 생성합니다.
(5). (3)의 처리 설명을 간소화하기 위해 우리는 실체에서 응답으로 재충전하는 처리를 제시했다.
다음은 DB 연결과 관련된 클래스, 인터페이스를 만듭니다.

2-2. 매퍼를 둘러싸다


com.example.sampleapi.mapper.UsersMapper.java
@Mapper  // (1)
@Component
public interface UsersMapper {
    List<UsersEntity> findUserList(); // (2)
}
com.example.sampleapi.mapper.entity.UsersEntity.java
@Data  // (3)
public class UsersEntity {
    private Integer userId;
    private String userName;
}
또 간단한 설명이야.
(1). MyBatis에 대한 주석@Mapper을 지정합니다.이 클래스는 XML과 연관된 매핑기임을 인식합니다.
(2). 실현할 방법을 성명하다.메서드 이름은 뒤에 설명된 XML의 id 속성에 매핑되고 해당하는 SQL을 실행합니다.
(3). Lombok에서 제공하는 @Data 설명입니다.이것은 모든 필드에setter와 getter를 자동으로 생성합니다.
여기까지 해볼게요.
"표의 열 이름은 명명 사례인데 실체의 필드는 메일 사례로 비출 수 있습니까?"
이렇게 생각하는 너.
아직 설정이 조금 남았으니 이대로 진행하세요.
마지막으로 XML 파일을 만들어서 응용 프로그램을 진행합니다.yml에 간단한 설정을 넣으면 완성됩니다.

2-3. XML 제작 및 응용 프로그램.yml 설정


resources.mapper.Users.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.example.sampleapi.mapper.UsersMapper">  <!-- (1) -->
    <select id="findUserList" resultType="com.example.sampleapi.mapper.entity.UsersEntity">  <!-- (2) -->
        SELECT
            USER_ID,
            USER_NAME
        FROM
            USERS
    </select>
</mapper>
resources.application.yml
spring:  # ここはDBの接続情報を定義しているだけなので今回は関係ありません
  datasource:
    url: jdbc:mysql://localhost/sample_db
    username: root
    password: dummy

mybatis:
  mapperLocations: classpath*:/mapper/*.xml  # (3)
  configuration:
    mapUnderscoreToCamelCase: true  # (4)
마지막 간단한 설명.
(1). namespace 속성 수여@Mapper의 클래스 경로를 지정합니다.그러면 이 XML 파일이 어떤 Java 인터페이스에 매핑되는지 알 수 있습니다.
(2). UsersMapper.findUserList() 속성에서 이를 id 로 기술하여 상기 findUserList 로 비추도록 합니다.반환 값을 지정해야 하기 때문에 resultType 속성에 UsersEntity 클래스의 경로를 씁니다.
(3). 이번처럼 맵 인터페이스와 XML 파일이 다른 패키지에 존재하도록 설정하려면 지정mapperLocations을 통해 XML을 정확하게 읽을 수 있습니다.
(4). 이것은 앞에서 말한 명명 사례의 열 이름과 대문자 사례에서 쓴 실체 필드를 자동으로 비추는 편리한 기능이다.기본값은 false 이므로 true 로 설정해 드릴게요.
이외에도 편리한 설정 항목이 많다.참조yBatis 공식.
이렇게 하면 완성!!
나중에 실제로 API에 요청을 보내서 DB에서 값을 받아보세요!!

3. 실제 요구 사항 제시


Postman REST Client를 사용하여 요청을 전송합니다.
물론,curl도 다른 도구를 사용할 수 있습니다.
API를 시작합니다.IntelliJ에서 Gradle 작업의 bootRun 시작을 선택합니다.
URLhttp://localhost:8080/get/sample을 지정하고 GET 메서드인지 확인한 후 Send 를 클릭합니다.

가격을 잘 받았는지 확인할 수 있을 것 같아!

그러면 DB 조작은 언제든지 가능합니다!!

마지막


"환경만 좋으면 시원하게 할 수 있어요!"이런 인상.
저는 개인적으로 MyBatis가 SQL을 기술하고 자바의 맵과 이해하기 쉬운 부분을 좋아합니다.
XML을 써야 하는 곳, JPA처럼 자동 생성 기능이 없는 곳은 싫은 것 같다.
뭐든지 다 그렇지, 익숙해지면 간단하지!

좋은 웹페이지 즐겨찾기