[Spring Boot] 스프링부트 프로젝트 생성부터 MyBatis + MySQL 연동까지

seulzzang·2023년 4월 29일
1

자바/Spring Boot

목록 보기
1/2
post-thumbnail

안니옹하세요? 정말 오랜만입니다.

그동안 무슨 일이 있었냐면 취업을 하고 좀 바빴습니다.

회사에서 스프링을 사용해서 그거 가지고 프로젝트를 꽤나 많이 만들었는데요.. (기초 직무 교육)

스프링을 하나도 모르던 제가 이제 눈감고(는 솔직히 거짓말이고) 프로젝트 생성하고 기초 설정을 능숙하게 할 줄 알게 되었고 controller, domain, mapper, repository, dao, dto, service ..등등의 개념들을 이해하게 될 정도로 프로젝트를 좀 많이 다뤘습니다.

처음에는 뭐... 저렇게 프로세스가 가는데 이해가 하나도 안됐지만 이제 어떻게 되는지 정도는 안다고 당당하게 말할 수 있음..

지금도 '잘' 한다고는 못하지만 그래도 어디가서 스프링부트좀 해봤습니다! 라고 말할 수 있을 정도지 않을까요..?

저는 다뤄본 언어는 여러가지지만 자신있게 할 수 있다고 말할 수 있는건 파이썬 밖에 없었는데요, 자바도 어느정도 초급~중급정도로 다룰 줄 알게 된 것 같습니다..
한달 반 동안의 시간이 이렇게 저를 바꿔놨습니다..
하여간 본론으로 넘어가죠 서론이 넘 길어ㅋㅋ


개발환경

Window 11
IntelliJ Ultimate
openjdk 11
Spring Boot 2.7.10

(회사 컴이 윈도우라서 윈도우 환경에서 개발중)
인텔리제이 얼티밋을 사용하면 스프링이니셜라이저를 인텔리제이에서 이용할 수 있다. 얼티밋이 아닌 커뮤니티 버전을 사용한다면 Spring Initializer에서 스프링 프로젝트를 생성하고 인텔리제이에서 임포트해서 사용할 수 있다. (따로 만든 프로젝트를 임포트 하는 방법은 검색하면 잘 나옴)

프로젝트 생성

  • 본인의 jdk 버전에 맞게 자바를 선택해주시면 되는데 난 Spring Boot 2.7.10을 이용할 것이기 때문에 11버전을 선택했다.
  • 자바와 jdk가 11버전인데 3.대 버전을 선택하면 아마 삑날거에여
  • Dependencies에 필요한 것들을 검색해서 넣어준다.
    • MySQL
    • MyBatis
    • JDBC
    • 위의 세개는 필수입니다. 깜빡하고 JDBC를 빼고 캡처함 ㅠㅠ
  • 웹을 같이 개발하실거라면 Spring Web관련 프레임워크도 추가해주기. Tymeleaf같은 템플릿 엔진도 추가하면 된다.
  • 사실 MySQL이 아니라 MaraiDB라든지.. MS SQL이라든지 여러 다른 DB도 상관없음. driver만 올바르게 입력해주면 됨.
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-web-services'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

제가 가장 최근에 만든 프로젝트의 dependencies 입니다. 참고만 하세염.
build.gradle에서 확인하실 수 있다.
이후 create를 누르면 알아서 빌드까지 완.

application.yml

  • application.properties보다는 application.yml을 많이 사용하는 추세라고 한다. (거의 안쓴다는데요?)
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://[데이터베이스 주소]/[데이터베이스 이름]
    username: 사용자이름
    password: 사용자비밀번호

  devtools:
    livereload:
      enabled: true
    restart:
      enabled: false

  thymeleaf:
    cache: false
    enabled: true
    prefix: classpath:/templates/html/
    suffix: .html

mybatis:
  mapper-locations: classpath:mapper/**/*.xml
  configuration:
    map-underscore-to-camel-case: true
  • datasource에서 url 같은 경우 보통 로컬디비를 사용하기에 localhost:3306을 적어주면 된다. (aws를 사용한다거나 mariadb랑 같이 사용중이라 포트번호가 바꼈다면 본인 db 상황에 맞게 적용해주면 됨)
  • devtools는 프론트개발 시 html 수정사항을 새로고침하면 바로볼 수 있게 해주는 설정. (지금은 중요하지 않음)
  • 타임리프도 마찬가지.. 지금은 중요하지 않음
  • MyBatis 설정에서 classpath를 저렇게 지정해준다는 건 mapper폴더 안의 어떤 이름을 가진 .xml파일들을 mapper로 읽겠다는 뜻이다.
    • 보통 resources안에 mapper폴더를 만들어서 관리하는 편이다.

이렇게 하면 기본 설정은 끝! 다음은 mapper를 작성하고 db의 데이터를 불러오는 방법을 확인해보도록 하장.

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글