프로젝트에서 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) 기능을 구현하였다.


소스첨부 : 

test.z01

test.z02

test.zip


출처 : https://spring.io/guides/gs/accessing-data-mysql/



+ Recent posts