티스토리 뷰





반응형

1. gradle에 의존성 추가

본 작업은 gradle로 했습니다. 그렇기에 제일 먼저 디펜던시를 추가해 줍니다.

dependencies {
    compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2'
    compile 'org.springframework.boot:spring-boot-starter-jdbc'
    compile 'mysql:mysql-connector-java'
}

2. MySQL관련 config 설정

src > main > resources에 application.yml의 파일을 생성해줍니다.

spring:
  datasource:
    url: jdbc:mysql://ip주소:port번호/DB이름?characterEncoding=utf8
    username: 
    password: 
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  type-aliases-package: kr.co.fastcampus.eatgo
  mapper-locations: mybatis/mapper/**/*.xml

3. DB에 쿼리를 날릴 Mapper 작성하기

위에서 mapper-locations을 보면 알 수 있듯이 우린 저 경로에 .xml 파일을 생성해줘야한다.

우선 resources > mybatis에 mybatis-config.xml 파일을 생성해준다. mapper 파일들이 추가될 때마다 여기 config 설정에서 하나씩 추가해서 사용하면 될 것이다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <mappers>
    <mapper resource="BoardMapper.xml"/>
  </mappers>
</configuration>

자 이제 게시판의 조작을 담당할 BoardMapper.xml를 생성해 보자!

resources > mybatis > mapper 디렉터리를 생성하고 BoardMapper.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="kr.co.fastcampus.eatgo.domain.BoardRepository">
  <select id="getBoards" resultType="java.util.HashMap">
    SELECT * FROM board;
  </select>
</mapper>

4. Controller > Service > Repository 만들기

필자는 main > java > 패키지명에 interface, application, domain라는 디렉터리를 생성하였는데 interface에 컨트롤러, application에 서비스, domain에 Repository를 생성하였다.

간단하게 소스만 추가하도록 하겠다.

@RestController
public class BoardController {
  @Autowired
  private BoardService boardService;

  @GetMapping("/v1/board")
  public List<Map<String, Object>> getBoards() {
    return boardService.getBoards();
  }
}
public interface BoardService {
  List<Map<String, Object>> getBoards();
}
@Service
public class BoardServiceImpl implements BoardService {
  @Autowired
  private BoardRepository boardRepository;

  @Override
  public List<Map<String, Object>> getBoards() {
    return boardRepository.getBoards();
  }
}
@Mapper
@Repository
public interface BoardRepository {
  List<Map<String, Object>> getBoards();
}

이렇게 하면 기본적인 셋팅이 끝나게 되며 /v1/board로 접근할 경우

아래와 같이 DB의 데이터가 넘어 오는 것을 확인할 수 있다.

 

반응형
댓글
반응형
최근에 달린 댓글
글 보관함
Total
Today
Yesterday
최근에 올라온 글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31