Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 기타
- I'm fine thank you
- nginx
- index
- DBMS
- Inside Of Me
- 악보
- 데이터베이스
- 니가 참 좋아
- oracle
- 천공의 시간
- 오라클 아키텍처
- 핑거스타일
- 스위트라떼
- SQL 처리
- 말 더듬
- 신입
- 러블리즈
- 장범준
- 개발자
- DBMS 구성요소
- 슬픔의 후에
- 봄 사랑 벚꽃 말고
- 인덱스
- 레이디스코드
- db
- IT
- 아이유
- 6학년 8반 1분단
- 오라클
Archives
취미로 음악을 하는 개발자
[Spring Boot] MyBatis 본문
728x90
프로젝트 생성
코드 구현
// build.gradle
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 32 33 34 35 36 | plugins { id 'org.springframework.boot' version '2.1.7.RELEASE' id 'java' id 'war' } apply plugin: 'io.spring.dependency-management' group = 'com.study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations { compileOnly { extendsFrom annotationProcessor } } ext['tomcat.version'] = '8.5.38' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-web' implementation("mysql:mysql-connector-java") implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.0' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'javax.servlet:jstl' implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' } | cs |
// application.properties
1 2 3 4 5 6 7 8 9 10 11 | server.port = 8081 # JSP spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/DB이름 spring.datasource.username=유저이름 spring.datasource.password=비밀번호 mybatis.mapper-locations=classpath:mybatis/mapper/**/**.xml | cs |
mysql이나 oracle이나 자신의 DB에 맞게 설정을 맞춰주면 될 것 같다. (필자는 mysql을 사용)
물론 사용하는 DB에 따라 build.gradle에서 dependency도 바꿔줘야 함.
mybatis / mapper 폴더 아래의 모든 폴더의(**) 모든 xml(**.xml)을 사용한다고 지정
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 | package com.study.springboot; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.study.springboot.jdbc.IMyUserDao; @Controller public class MyController { @Autowired private IMyUserDao userDao; @RequestMapping("/") public @ResponseBody String root() throws Exception { return "MyBatis 사용하기"; } //@GetMapping("/user") @RequestMapping(value = "/user", method = RequestMethod.GET) public String userlistPage(Model model) { model.addAttribute("users", userDao.list()); return "userlist"; } } | cs |
처음 "/"에는 @ResponseBody에 의해 "MyBatis 사용하기"가 출력된 화면이 나오게 됨.
"/user"로 넘어가면 "users"라는 속성을 모델에 넣어주되 Mapper와 연결된 IMyUserDao 인터페이스의 메소드를 값으로 사용
1 2 3 4 5 6 7 8 9 10 | package com.study.springboot.jdbc; import java.util.List; import org.apache.ibatis.annotations.Mapper; @Mapper public interface IMyUserDao { List<MyUserDTO> list(); } | cs |
DB 내용이 담긴 MyUserDTO를 list() 메소드로 호출하는 것을 만듬
1 2 3 4 5 6 7 8 9 | package com.study.springboot.jdbc; import lombok.Data; @Data public class MyUserDTO { private int id; private String auth; } | cs |
lombok에 의한 설정.
// MyUserDao.xml
1 2 3 4 5 6 7 8 9 10 | <?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.springboot.jdbc.IMyUserDao"> <select id="list" resultType="com.study.springboot.jdbc.MyUserDTO"> select * from user </select> </mapper> | cs |
IMyUserDao에 연결될 Mapper는 list함수가 실행될 때 MyUserDTO 타입으로 'select * from user' 쿼리문을 실행
// userlist.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% out.println("MyBatis : Hello World"); %> <br> <c:forEach var="dto" items="${users}"> ${dto.id} / ${dto.auth} <br> </c:forEach> </body> </html> | cs |
이 페이지로 들어오면 모델에 지정한 속성중 "users"라는 속성을 사용하는데 그것은 dto라는 변수로 쓸 것이다.
그래서 그 dto의 id값과 auth값을 출력 IMyUserDao에서 List로 설정했기 때문에 각각의 값이 배열 형태로 나오게 됨
* MyBatis에 관한 글은 따로 올릴 것임
'공대인 > Spring[Boot]' 카테고리의 다른 글
[Spring Boot] MyBatis HashMap 사용 (2) | 2019.08.16 |
---|---|
[Spring Boot] MyBatis 파라미터 사용 (0) | 2019.08.14 |
[Spring Framework] MyBatis란 (0) | 2019.08.09 |
[Spring Boot] InitBinder, Valid (0) | 2019.08.05 |
[Spring Boot] 데이터 검증, Validator (0) | 2019.08.02 |
Comments