씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

[SpringBoot] 스프링부트에 DB연결하기
Java 관련/SpringBoot

[SpringBoot] 스프링부트에 DB연결하기

2022. 4. 14. 11:04
728x90

프로젝트를 만들때 spring web과 Mybatis Framework를 체크해줍니다!

Oracle Driver는 버전때문에 안되는 걸로 알고있지만 버전업데이가 되면서 이제는 되는지 한번 체크해서 테스트 해볼게요!

pom.xml에 보면 mybatis가 추가되어있고 ojdbc8버전이 잡혀있네요!

​

application.properties

# server
server.port=8787

# view
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

# encoding
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
server.servlet.encoding.enabled=true

# resources
spring.mvc.static-path-pattern=/resources/**

# jdbc
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=kh
spring.datasource.password=kh

# mybatis alias
mybatis.type-aliases-package=com.boot.jdbc.model.dto.MyDto

#server 부분은 서버의 포트를 정해줍니다.

#view는 prefix와 suffix설정을 합니다.

#encoding에서 UTF-8설정을합니다.

#resources는 css같은 파일을 쓰고싶으면 연결해줍니다.

#jdbc는 db계정을 연결합니다.

#mybatis는 alias를 잡아줍니다!

​

​

StartBoot02Application.java

package com.boot.jdbc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;

@SpringBootApplication
public class StartBoot02Application {

	public static void main(String[] args) {
		SpringApplication.run(StartBoot02Application.class, args);
	}
	
	@GetMapping("/")
	public String root() {
		return "index";
	}

}

​

​

index,jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="resources/css/style.css" />
</head>
<body>

	<h1>Hello, Boot!</h1>
	
	<a href="">list</a>

</body>
</html>

src/main안에 webapp/WEB-INF/views를 만들고 index.jsp를 만듭니다!

​

​

src/main/resources아래 static 아래에 css폴더를 만들고 style.css를 만들어주세요!

​

style.css

a {
	font-size: 50px;
}

실행시키면 잘뜹니다!

​

​

db연결을 위해 테이블을 만들어야하는데요.

이번에는 src/main/resources아래에 db폴더를 만들고 myboard.sql파일을 만들겠습니다.

​

myboard.sql

DROP SEQUENCE MYNOSEQ;
DROP TABLE MYBOARD;

CREATE SEQUNCE MYNOSEQ;

CREATE TABLE MYBOARD(
	MYNO NUMBER PRIMARY KEY,
	MYNAME VARCHAR2(500) NOT NULL,
	MYTITLE VARCHAR2(1000) NOT NULL,
	MYCONTENT VARCHER2(4000) NOT NULL,
	MYDATE DATE NOT NULL
);

INSERT INTO MYBOARD
VALUES(MYNOSEQ.NEXTVAL, '관리자', '제목 테스트', '내용 테스트', SYSDATE);

SELECT MYNO, MYNAME, MYTITLE, MYCONTENT, MYDATE
FROM MYBOARD;

​

​

이렇게 패키지를 만들어주시고 다른거는 다 똑같지만 Mapper가 마이바티스의 Mapper와 Dao를 합친부분입니다!

package com.boot.jdbc.model.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.boot.jdbc.model.dto.MyDto;

@Mapper
public interface MyBoardMapper {
	
	@Select(" SELECT MYNO, MYNAME, MYTITLE, MYCONTENT, MYDATE FROM MYBOARD ORDER BY MYNO DESC ")
	List<MyDto> selectList();
	
	@Select(" SELECT MYNO, MYNAME, MYTITLE, MYCONTENT, MYDATE FORM MYBOARD WHERE MYNO = #{myno} ")
	MyDto selectOne(int myno);
	
	@Insert(" INSERT INTO MYBOARD VALUES(MYNOSEQ.NEXTVAL, #{dto.getMyname}, #{mytitle}, #{dto.mycontent}, SYSDATE) ")
	int insert(MyDto dto);
	
	@Update(" UPDATE MYBOARD SET MYTITLE = #{mytitle}, MYCONTENT=#{mycontent} WHERE MYNO = #{myno}  ")
	int update(MyDto dto);
	
	@Delete(" DELETE FROM MYBOARD WHERE MYNO = #{myno} ")
	int delete(int myno);

}

엄청 간단해졌죠?

https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
 

mybatis-spring-boot-autoconfigure – Introduction

Introduction What is MyBatis-Spring-Boot-Starter? The MyBatis-Spring-Boot-Starter help you build quickly MyBatis applications on top of the Spring Boot. By using this module you will achieve: Build standalone applications Reduce the boilerplate to almost z

mybatis.org

 

mybatis spring boot 설명이 있는 링크입니다.

​

​

@Mapper 어노테이션을 통해서 Mapper로 만들어주며 application.properties파일에 있는

mybatis.type-aliases-package=com.boot.jdbc.model.dto.MyDto

이 코드가 config파일에서 alias를 잡아줬던것 처럼 alias를 잡아줍니다!

​

​

이번에는 com.boot.jdbc.controller 패키지를 만들고 MyBoardController파일을 만듭니다!

package com.boot.jdbc.controller;

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 com.boot.jdbc.model.biz.MyBoardBiz;

@Controller
@RequestMapping("/myboard")
public class MyBoardController {

	@Autowired
	private MyBoardBiz biz;
	
	
	public String selectList(Model model) {
		
		model.addAttribute("list", biz.selectList());
		
		return "myboardlist";
	}
	
}

selectList를 위한 코드입니다!

이제 views에 myboardlist.jsp 파일을 만들겠습니다.

만들기 전에 jstl을 쓰기위해 pom.xml에 디펜던시 하나 추가하겠습니다!

<!-- jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>

​

​

이제 myboardlist.jsp를 만들어볼까요?

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h1>LIST</h1>

	<table border="1">
		<col width="50" />
		<col width="100" />
		<col width="500" />
		<col width="100" />
		<tr>
			<th>번호</th>
			<th>작성자</th>
			<th>제목</th>
			<th>작성일</th>
		</tr>
		<c:choose>
			<c:when test="${empty list }">
				<tr>
					<th colspan="4">----------작성된 글이 없습니다----------</th>
				</tr>
			</c:when>		
			<c:otherwise>
				<c:forEach items="${list }" var="dto">
					<tr>
						<td>${dto.myno }</td>
						<td>${dto.myname }</td>
						<td><a href="detail.do?myno=${dto.myno }">${dto.mytitle }</a></td>
						<td>${dto.mydate }</td>
					</tr>
				</c:forEach>
			</c:otherwise>
		</c:choose>
		<tr>
			<td colspan="4" align="right"><input type="button" value="글작성" onclick="location.href='writeform.do'"></td>
		</tr>
	</table>
</body>
</html>

​

​

이후 실행시키면 잘 실행이 됩니다!

ojdbc8로도 잘 되네요~

​


수정할때마다 서버를 껏다가 다시켜야 작동을 하는데요.

<!-- devtools -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

pom.xml에 devtools를 추가해주면 그렇게 하지않아도 작동이됩니다.

프로젝트 만들때 체크하는거에서 체크하면 자동으로 잡아줍니다!

728x90

'Java 관련 > SpringBoot' 카테고리의 다른 글

[SpringBoot] Thymeleaf02  (0) 2022.04.16
[SpringBoot] Thymeleaf01  (0) 2022.04.15
[SpringBoot] Spring Boot 기본 설정  (0) 2022.04.13
    'Java 관련/SpringBoot' 카테고리의 다른 글
    • [SpringBoot] Thymeleaf02
    • [SpringBoot] Thymeleaf01
    • [SpringBoot] Spring Boot 기본 설정
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바