Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

ALLYES

[2022년 청년친화형 기업 ESG지원 사업 - 34] 본문

ESG

[2022년 청년친화형 기업 ESG지원 사업 - 34]

Allyes_99 2022. 10. 20. 17:50

일시 : 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>