[SpringBoot] Packaging / WAR / JAR / 스프링부트에서 Mybatis 구현

🐷Jinie (juniorDeveloper)·2021년 1월 6일
1

SpringBoot

목록 보기
8/11

1. 패킹방법

1 ) WAR
: JSP로 진행
웹 전용
2 ) JAR
: HTML로 진행
JAVA 전용

  • 두가지의 패킹방법을 섞을 수 없다.

2. 스프링부트에서 Mybatis 구현 ( WAR )

2-1. 새로운 프로젝트 만들기

  • 필요한 옵션 추가하기
  • WAR로 프로젝트를 생성하면 webapp폴더가 자동으로 생성되어있다.

2-2. pom.xml

  • JSP 와 JSTL 을 사용하기위해 pom.xml 에 설정추가
 <!-- JSTL 의존성 추가  -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
</dependency>
	    
<!-- JSP 컴파일을 위한 라이브러리 추가  -->
<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

2-3. application.properties

##  웹서버 실행 
spring.main.web-application-type=SERVLET  
server.port=8888          

## 데이터베이스 연동
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=system
spring.datasource.password=1234

## JSP 경로설정 
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
  • spring.mvc.view.prefix=/WEB-INF/view/ 의 경로와 맞게 폴더를 설정해준다.
  • JSP 파일만들기

    : form.jsp 와 select.jsp 파일을 직접 호출할 수 없다.
  • Mybatis01Application.java 파일을 실행한다.
  • index.html 파일을 만들어 실행 테스트한다.

2-4. DatabaseConfig.java

package com.ruby;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@MapperScan(basePackages="com.ruby")	
@EnableTransactionManagement
public class DatabaseConfig {
	@Bean
    public  SqlSessionFactory  sqlSessionFactory(DataSource dataSource )  throws Exception {
			 
		SqlSessionFactoryBean sqlSessionFactory = new  SqlSessionFactoryBean();
		sqlSessionFactory.setDataSource(dataSource);
		PathMatchingResourcePatternResolver resolver = new  PathMatchingResourcePatternResolver();
		sqlSessionFactory.setMapperLocations(resolver.getResource("classpath:mapper/sample-Mapper.xml")); 
		return sqlSessionFactory.getObject();  
		  
	}
	 
	@Bean
	public  SqlSessionTemplate  sqlSessionTemplate(SqlSessionFactory  sqlSessionFactory) throws Exception{  
		final  SqlSessionTemplate  sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
		return sqlSessionTemplate;  
	}
}
  • mapper 폴더를 만들어 mapper 파일을 만들어준다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="sample-Mapper">
	<select id="selectSchool" resultType="com.ruby.SchoolVO">
		SELECT * 
		FROM SCHOOL0117 
		ORDER BY SNO ASC
	</select>
	<insert id="insertSchool">
		INSERT  INTO  SCHOOL0117 (SNO, SNAME, EMAIL)
      		VALUES ( #{sno}, #{sname}, #{email} )
	</insert>
	<delete id="deleteSchool">
		DELETE  
		FROM SCHOOL0117 
		WHERE SNO = #{sno}     
	</delete>
</mapper>   
  • getResource("classpath:mapper/sample-Mapper.xml") 부분 처리완료

2-5. ORACLE 테이블만들기

//테이블 만들기
CREATE TABLE SCHOOL0117(
    SNO CHAR(3),
    SNAME NVARCHAR2(20),
    EMAIL VARCHAR2(50)
);

//데이터 넣기
INSERT INTO SCHOOL0117 VALUES('100', 'ji nie', 'jin@gmail.com' );
INSERT INTO SCHOOL0117 VALUES('200', 'ji hay', 'hay200@gmail.com' );
INSERT INTO SCHOOL0117 VALUES('300', 'kim', 'kim@gmail.com' );
INSERT INTO SCHOOL0117 VALUES('400', 'jun', 'jun400@gmail.com' );
INSERT INTO SCHOOL0117 VALUES('500', 'park', 'park@gmail.com' );
INSERT INTO SCHOOL0117 VALUES('600', 'lee', 'lee600@gmail.com' );
INSERT INTO SCHOOL0117 VALUES('700', 'young won', 'kwom700@gmail.com' );

// 값 확인하기
SELECT * FROM SCHOOL0117 ORDER BY SNO ASC;

  • 테이블을 만든 후에는 반드시 커밋을 해주어야한다!!! 중요!

2-6. VO 만들기

package com.ruby;

import lombok.Data;

@Data
public class SchoolVO {
	 private  String  sno;
	 private  String  sname;
	 private  String  email;
}
  • Lombok 라이브러리를 사용해서 @Data가 이용이 가능하다.
  • 따라서 Getter/Setter 처리를 따로 해주지 않아도 된다.

2-7. UI 구성하기

  1. index.jsp
  • src/main/resource 에 static폴더 안에 html파일을 넣어 만들어준다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
  <div align="center">
      <br><br> 
      <h2>스프링부트 MyBatis 연습 </h2>
      <hr>
      <br><br> 
      <a  href=/form.do> 저장하기 </a> <p>
      <br><br> 
      <a  href=/select.do> 목록보기 </a> <p>
  </div>
</body>
</html>
  1. form.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>
</head>
<body>
  <div align="center">
	<form action="/formOK.do"  method="post">
	<h1> 회 원 가 입 </h1>
	  <table border=1 height="160">
		<tr>
		    <td>학번</td>
		    <td>
				<input  type=text  name="sno" >
			</td>
		</tr> 
		<tr>
			<td>이름 </td>
			<td> 
				<input  type=text  name="sname" > 
			</td>
		</tr>
		<tr>
			<td>메일 </td>
			<td> 
				<input  type=text  name="email" > 
			</td>
		</tr> 
			<tr>
			<td colspan=2  align="center" >
				<input  type=submit value="회원가입">
			</td>
		</tr> 
	  </table>
    </form>
  </div>
</body>
</html>
  1. select.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jstl/core_rt"  prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<br>
	<table  border=1  width=800  align="center">
		<tr><th>번호 </th><th> 이름 </th> <th> 이메일</th>
		<c:forEach  items="${schoolList}"  var="board"> 
        <!-- $로 시작하는 것은 EL표기법 / C: JSTL문법 -->
		<tr>
			<td> ${board.sno} </td>
			<td> ${board.sname} </td>
			<td><a href=/deleteSchool.do?sno=${board.sno}>${board.email}</a> </td>
			</tr> 
		</c:forEach>
	</table>
</body>
</html>
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글