Spring boot + jdbc driver 로 데이터베이스 사용 환경 설정
1. application.properties 에 해당 코드를 추가한다.
code>>
1 2 3 4 5 | spring.application.name=SpringBootJdbc spring.datasource.url=jdbc:mysql://localhost/dbproject?autoReconnect=true&useSSL=false spring.datasource.username=root spring.datasource.password=(****) spring.datasource.dirverClassName=com.mysql.jdbc.Driver | cs |
해당하는 Database를 dbproject라는 자리에 적어두자.
그리고 useSSL=fasle 최근에 추가된 SSL 강제성 때문에 각종 오류가 발생하는 것을 방지하기 위해서
SSL 사용을 하지 않는다고 명시적으로 나타내주는 구문이다.
2. Maven Dependency 추가
jdbc 드라이버 추가
1 2 3 4 5 6 | <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>1.4.1.RELEASE</version> </dependency> | cs |
mysql-connector 추가
1 2 3 4 5 6 | <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.4</version> </dependency> | cs |
3. 데이터베이스를 연동할 실제 JAVA 구현 코드 ( Test 용 )
데이터를 운반할 VO(Value Object)를 구현
User.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 | package com.jbee.domain; public class User { private int userNum; private String userName; public int getUserNum() { return userNum; } public void setUserNum(int userNum) { this.userNum = userNum; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String toString() { return "User{" + "userNum=" + userNum + ", userName='" + userName + '\'' + '}'; } } | cs |
Mysql에 특화된 DAO(Data Access Object) 구현(실제 프로젝트에서는 Interface를 사용하여 DBMS에 독립적으로 설계)
UserDao.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 | package com.jbee.domain; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class UserDao { @Autowired private JdbcTemplate jdbcTemplate; public List<User> listForBeanPropertyRowMapper() { String query = "SELECT * FROM user"; return jdbcTemplate.query(query, new BeanPropertyRowMapper<User>(User.class)); } public int insert(User user){ String query = "INSERT INTO user(userNum, userName) VALUES(?,?)"; return jdbcTemplate.update(query, user.getUserNum(), user.getUserName()); } } | cs |
4. 실제 작동하는지 보기 위한 클래스 설정
Controller 생성
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 | package com.jbee.web; import com.jbee.domain.User; import com.jbee.domain.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller public class MainController { @Autowired private UserDao userDao; @GetMapping("/") public String mainPage() { return "index"; } @PostMapping("/user") public String userAdd(User user) { System.out.print(user); userDao.insert(user); return "redirect:/user"; } @GetMapping("/user") public String userlistPage(Model model) { model.addAttribute("users", userDao.listForBeanPropertyRowMapper()); return "/userlist"; } } | cs |
값을 입력받을 html 파일 구현 ( input tag의 post 방식 데이터 송신 )
index.html>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <h1>Text</h1> <form action="/user" method="post"> <input type="number" name="userNum" placeholder="number"> <input type="text" name="userName" placeholder="name"> <button type="submit">Submit</button> </form> </body> </html> | cs |
값을 출력할 html 파일 구현 ( mustache 템플릿 엔진을 통한 값 출력 )
userList.html>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <h1>UserList</h1> <div> {{#users}} <ul> <li>{{userNum}}</li> <li>{{userName}}</li> </ul> {{/users}} </div> </body> </html> | cs |
이제 애플리케이션을 실행해보면, index.html 로 접속되어 두 개의 input을 컨트롤러로 보내게 된다. 이 input은 컨트롤러에서 Database에 insert 되고, redirect가 userlist.html 로 되면서, input된 value에 대해 select 쿼리를 실행하여, 값이 출력된다.
End
'Dev.BackEnd > Spring Boot' 카테고리의 다른 글
#SLiPP Spring boot, JPA 강의 - 반복주기 5 (0) | 2016.10.23 |
---|---|
#SLiPP Spring boot, JPA 강의 - 반복주기 4 (2) | 2016.10.17 |
#SLiPP Spring boot, JPA 강의 - 반복주기 3 (0) | 2016.10.10 |
#SLiPP Spring Boot, JPA 강의 - 반복주기 2 (0) | 2016.10.03 |
#SLiPP Spring Boot, JPA 강의 - 반복주기 1 (1) | 2016.09.26 |