프로젝트에서 sts를 사용해보았는데 익숙하지 않아
간단하게 mysql을 이용해 data에 접근하는 방법을 알고 싶었다.
다행히도 자세하게 가이드가 된 문서(https://spring.io/guides/gs/accessing-data-mysql/)
가 있어 블로그에 정리하게 되었다.
sts를 이용해 mysql의 data를 접근하는 방법
1. STS 설치 후 패키지 익스플로러로 workspace 생성한다.
2. 다음과 같이 패키지 구조가 생성되었다면
lombok.jar를 다운(https://projectlombok.org/download)
받아 자신이 사용하는 sts나 eclipse 위치를 지정해주고 설치한다.
3. pom.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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifactId>gs-mysql-data</artifactId> <version>0.1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.23.1-GA</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> </dependencies> <properties> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> </plugin> </plugins> </build> </project> | cs |
pom.xml 수정이 완료되면
MySQL 8.0 Command Line Client - Unicode 라는 터미널을 실행시켜
db 루트 비밀번호를 입력하고
아래 커맨드라인을 입력하여 db_example 이라는 db 스키마를 생성하고 user를 만들고 비밀번호와 권한도 준다.
1 2 3 | mysql> create database db_example; -- Create the new database mysql> create user 'springuser'@'%' identified by 'ThePassword'; -- Creates the user mysql> grant all on db_example.* to 'springuser'@'%'; -- Gives all the privileges to the new user on the newly created database | cs |
4. 다음 hello 패키지 안에 class파일을 생성한다.
총 3개 ( MainController.java, User.java , UserRepository.java)
다음과 같이 구성되었다면 안의 내용을 아래와 같이 넣어준다.
4.1 MainController.java
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 | package hello; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @Controller // This means that this class is a Controller @RequestMapping(path="/test") // This means URL's start with /demo (after Application path) public class MainController { @Autowired // This means to get the bean called userRepository // Which is auto-generated by Spring, we will use it to handle the data private UserRepository userRepository; @GetMapping(path="/add") // Map ONLY GET Requests public @ResponseBody String addNewUser (@RequestParam String name , @RequestParam String email) { // @ResponseBody means the returned String is the response, not a view name // @RequestParam means it is a parameter from the GET or POST request User n = new User(); n.setName(name); n.setEmail(email); userRepository.save(n); return "Saved"; } @GetMapping(path="/all") public @ResponseBody Iterable<User> getAllUsers() { // This returns a JSON or XML with the users return userRepository.findAll(); } } | cs |
4.2 User.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package hello; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import lombok.Data; @Entity // This tells Hibernate to make a table out of this class @Data public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; private String name; private String email; } | cs |
4.3 UserRepository.java
1 2 3 4 5 6 7 8 9 10 11 12 | package hello; import org.springframework.data.repository.CrudRepository; import hello.User; // This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository // CRUD refers Create, Read, Update, Delete public interface UserRepository extends CrudRepository<User, Integer> { } | cs |
5. 다음으로 /test/src/main/resources/application.properties 파일을 찾는다.
application.properties 파일은 비어있을텐데 이 부분에 다음과 같이 db정보를 입력해준다.
1 2 3 4 5 | #spring.jpa.hibernate.ddl-auto=create spring.datasource.url=jdbc:mysql://localhost:3306/db_example spring.datasource.username=springuser spring.datasource.password=ThePassword spring.datasource.driver-class-name=com.mysql.jdbc.Driver | cs |
6. 패키지를 잡고 다음과 같이 Update Maven Project를 한다.
7. 패키지를 잡고 다음과 같이 Maven install을 한다.
8. 빌드가 성공하면 서버를 올리고 웹브라우저를 열어 http://localhost:8080/test/all 를 입력해본다.
mysql workbench 실행하여
UserName을 springuser
password는 ThePassword를 입력하여 접속한다.
데이터가 없는것을 확인했으니 새로 넣어보자.
9. http://localhost:8080/test/add?name=sanghyun&email=shlee0882@gmail.com 을 입력하면
다음과 같이 데이터가 들어가게 된다.
데이터 조회를 해보면 json형식으로 나온것을 확인할 수 있다.
sts와 mysql을 이용하여 데이터 조회(select)와 입력(insert) 기능을 구현하였다.
소스첨부 :
출처 : https://spring.io/guides/gs/accessing-data-mysql/
'전체 > Spring' 카테고리의 다른 글
jUnit 개념, 특징, 어노테이션, 메서드 (1) | 2019.02.23 |
---|---|
IoC와 Spring DI (0) | 2019.02.23 |
Spring Framework 개념, 전략, 특징, 기능요소 (0) | 2019.02.23 |
Spring 프레임워크의 프레임워크란? (0) | 2019.02.23 |
Spring 용어 알아보기 (0) | 2017.05.12 |