๐ŸŒฟ Spring

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

 

 

๋‘˜๋‹ค ์‹คํ–‰์™„๋ฃŒ!

๋ฐ˜์‘ํ˜•
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ํŠธ์œ„ํ„ฐ ๊ณต์œ ํ•˜๊ธฐ
  • ๊ตฌ๊ธ€ ํ”Œ๋Ÿฌ์Šค ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ