Backend

Spring + MariaDB + Mybatis 연동 및 실행해보기

연_우리 2021. 12. 22. 16:33
반응형

1. MariaDB에 테이블 생성 및 데이터 추가

 

 

2. spring프로젝트를 열고, build.gradle에 dependency 추가

 

https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter

 

위 링크에서 원하는 버전을 클릭하고 gradle(short)를 복사해서 붙여넣는다.

(반드시 gradle 코끼리모양 꼭 눌러주기!)

📄 build.gradle
....

dependencies {
	implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.4'
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
}

.....

 

 

3. 폴더구성

sampleproject
├─ src
│   └─ main
│       ├─ java
│       │   └─ com
│       │       └─ study
│       │           ├─ controller
│       │           │   └─ Controller.java
│       │           ├─ domain
│       │           │   └─ Member.java
│       │           ├─ mapper
│       │           │   └─ Mapper.java
│       │           └─ SampleProjectApplication.java
│       └─ resources
│           ├─ mybatis
│           │   └─ XmlMapper.xml
│           └─ application.yml
└─ build.gradle

 

 

4. resources / application.yml에 설정 추가

spring:
  datasource:
    url: jdbc:mariadb://localhost:3306/접속세션명
    driver-class-name: org.mariadb.jdbc.Driver
    username: 접속자명
    password: 접속자의 비밀번호

mybatis:
  type-aliases-package: com.study.domain  # entity가 존재하는 경로작성.
  mapper-locations: mybatis/**.xml        # XmlMapper.xml이 존재하는 경로작성.

type-aliases-package를 생략하면 XmlMapper.xml의 resultType을 작성할 때 entity의 패키지까지 다 작성해주어야한다.

 

 

5. java / com / study / domain / Member.java 작성

package com.study.domain;

@Data
public class Member {
    private Long id;
    private String email;
    private String name;
    private String password;

    public Member(){

    }

    public Member(String email, String name, String password){
        this.email = email;
        this.name = name;
        this.password = password;
    }
}

 

 

6. java / com / study / mapper / Mapper.java 작성

package com.study.mapper;

@Mapper
public interface Mapper {

    //annotation방식
    @Select("select * from member")
    public List<Member> getList();

    //xml방식
    List<Member> getList2();
   
}

 

 

Mapper는 반드시 인터페이스로 선언해주어야하고, @Mapper어노테이션을 붙어야한다.

 

 

7. resources / mybatis / XmlMapper.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.study.mapper.Mapper">
    <select id="getList2" resultType="Member">
        select * from member
    </select>
</mapper>

namespace는 Mapper인터페이스의 패키지명까지 포함해서 작성
resultType은 application.yml에서 type-aliases-package으로 지정해주었기때문에 클래스명만 기재하는 것으로 가능.
만약 type-aliases-package가 생략되었으면 com.study.domain.Member로 작성해야한다

 

 

8. java / com / study / controller / Controller.java 작성

package com.study.controller;

@Controller
public class MemberController {

    @Autowired private Mapper mapper;

    @GetMapping("/mybatisAnnotation")
    @ResponseBody
    public List<Member> memberList(){
        return mapper.getList();
    }
    
    @GetMapping("/mybatisXml")
    @ResponseBody
    public List<Member> memberList2(){
        return mapper.getList2();
    }
}

 

 

9. 실행하기

localhost:8080/mybatisAnnotation

localhost:8080/mybatisXml

 

 

둘다 실행완료!

반응형
  • 네이버 블러그 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 구글 플러스 공유하기
  • 카카오톡 공유하기