ALLYES
[2022년 청년친화형 기업 ESG지원 사업 - 34] 본문
일시 : 2022.10.20
시간 : 9:00 ~ 18:00
오전/오후 : Spring
Spring DataBase 연결

- 모든 api들을 알필요x
- 동작하는 방법만 알면 사용가능
- Connection Pool : 데이터베이스와 연결된 커넥션을 미리 만들어 놓고 이를 pool로 관리하는 것
- HikariCP : 가벼운 용량과 빠른 속도를 가지는 JDBC의 커넥션 풀 프레임워크

- DB 연동하기 위해 사용하고 있는 DB의 각 속성들의 값을 작성

- MySQL을 구동하기 위해서는 Driver을 다운해야함
- mysql - 5.1.49버전 pom.xml 파일에 업로드
![]() |
![]() |
- Spring-jdbc(추상화된 JDBC) 다운
- Spring Framework 와 같은 버전으로 다운 해야함
![]() |
![]() |
- 아래 구도로 DB 연결 작업 코드 작성하기 위해서 ...
class A{
}
class B{
A a;
public void setA(A a){
this.a=a;
}
public B(A a){
this.a=a;
}
}
A a=new A();
B b=new B(a); // 생성자 주입(DI)
//b.setA(a); // setter주입(DI)
bridge api 다운로드
![]() |
![]() |


DB 연동 완료 후 결과창


글쓰기 버튼 추가
![]() |
![]() |
![]() |
BoardController.java
package kr.smhrd.controller;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
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 kr.smhrd.entity.Board;
import kr.smhrd.repository.BoardMapper;
@Controller
public class BoardController { // POJO
// 메서드
// 리스트요청(list.do)을 처리하는 메서드(DI)
@Autowired
private BoardMapper mapper;
// @RequestMapping -> HandlerMapping 동작한다
@RequestMapping("/list.do")
public String list(Model model) {
List<Board> list = mapper.getList();
model.addAttribute("list", list);
return "board/list"; // redirect, forward(JSP)
}
@RequestMapping("/register.do")
public String register() {
return "board/register"; // register.jsp
}
@RequestMapping("/insert.do") // title, content, writer
public String insert(Board vo) { // 파라메터수집(VO)
mapper.register(vo);
return "redirect:/list.do";
}
}
BoardMapper.java
package kr.smhrd.repository;
import java.util.List;
import kr.smhrd.entity.Board;
// JDBC API(CRUD) -> 생산성이 떨어진다, 유지보수하기가 어렵다(Java+SQL)
// MyBatis Framework : Java <-- 분리개발(mapping) --> SQL(xml)
// http://mybatis.org
public interface BoardMapper {
// 전체리스트를 가져오는 메서드
public List<Board> getList(); // select SQL~
// 등록 메서드
public void register(Board vo); // insert SQL~
}
BoradMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.smhrd.repository.BoardMapper">
<!-- board table 모든 게시물을 가져오는 SQL -->
<select id = "getList" resultType="kr.smhrd.entity.Board">
select * from board order by idx desc
</select>
<insert id = "register" parameterType="kr.smhrd.entity.Board">
insert into board(title, content, writer)
values(#{title}, #{content}, #{writer})
</insert>
</mapper>
list.jsp
<%@page import="kr.smhrd.entity.Board"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<Board> list = (List<Board>)request.getAttribute("list");
%>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<script
src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
location.href = "register.do"
});
});
</script>
</head>
<body>
<div class="container">
<h2>Spring MVC01</h2>
<div class="card">
<div class="card-header">BOARD</div>
<div class="card-body">
Content
<table class="table table-bordered table-hover">
<thead>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</thead>
<tbody>
<% for( Board vo : list) {%>
<tr>
<td><%=vo.getIdx() %></td>
<td><%=vo.getTitle() %></td>
<td><%=vo.getWriter() %></td>
<td><%=vo.getIndate() %></td>
<td><%=vo.getCount() %></td>
</tr>
<%} %>
</tbody>
</table>
<button class = "btn btn-sm btn-primary">글쓰기</button>
</div>
<div class="card-footer">AI.BigData 취업역량강화_A</div>
</div>
</div>
</body>
</html>
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<script
src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container">
<h2>Spring MVC01</h2>
<div class="card">
<div class="card-header">BOARD</div>
<div class="card-body">
<form action="insert.do" method="post">
<div class="form-group">
<label for="title">제목:</label>
<input type="text" class="form-control" placeholder="Enter title" name="title">
</div>
<div class="form-group">
<label>내용:</label>
<textarea rows="7" class="form-control" name="content"></textarea>
</div>
<div class="form-group">
<label for="writer">작성자:</label>
<input type="text" class="form-control" placeholder="Enter writer" id="writer" name="writer">
</div>
<button type="submit" class="btn btn-sm btn-primary">등록</button>
<button type="reset" class="btn btn-sm btn-warning">취소</button>
<button type="button" class="btn btn-sm btn-success">목록</button>
</form>
</div>
<div class="card-footer">AI.BigData 취업역량강화_AZ</div>
</div>
</div>
</body>
</html>'ESG' 카테고리의 다른 글
| [2022년 청년친화형 기업 ESG지원 사업 - 36] (0) | 2022.10.24 |
|---|---|
| [2022년 청년친화형 기업 ESG지원 사업 - 35] (0) | 2022.10.21 |
| [2022년 청년친화형 기업 ESG지원 사업 - 33] (0) | 2022.10.19 |
| [2022년 청년친화형 기업 ESG지원 사업 - 32] (0) | 2022.10.18 |
| [2022년 청년친화형 기업 ESG지원 사업 - 31] (0) | 2022.10.17 |








