스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan

실습 코드 참조

moonhy7/SpringBoot: SpringBoot 실습 코드 정리 (github.com)

GitHub - moonhy7/SpringBoot: SpringBoot 실습 코드 정리

SpringBoot 실습 코드 정리. Contribute to moonhy7/SpringBoot development by creating an account on GitHub.

github.com

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
1. DB 연동
1. Hikari 연동

- 스프링프레임워크는 설정파일로 boot는 자바 파일로 한다는 차이점

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan

- 스프링에서는 applicationContext.xml 에서 Bean 객체를 등록했지만

- 스프링부트에서는 클래스를 이용한다는 차이점이 존재

- DataSourceConfiguration

package com.springbook.configuration;

import javax.sql.DataSource;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@PropertySource("classpath:/application.properties")
public class DataSourceConfiguration {
	@Bean
	@ConfigurationProperties(prefix="springbook.datasource.hikari")
	public HikariConfig hikariConfig() {
		return new  HikariConfig();
	}
	
	@Bean
	public DataSource dataSource() throws Exception {
		DataSource dataSource = new HikariDataSource(hikariConfig());
		return dataSource;
	}
}
2. Mybatis 연동

- applicationContext.properties

mybatis.configuration.map-underscore-to-camel-case=true

- DataSourceConfiguration

package com.springbook.configuration;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@PropertySource("classpath:/application.properties")
public class DataSourceConfiguration {
	@Autowired
	private ApplicationContext applicationContext;
	
	@Bean
	@ConfigurationProperties(prefix="springbook.datasource.hikari")
	public HikariConfig hikariConfig() {
		return new  HikariConfig();
	}
	
	@Bean
	public DataSource dataSource() throws Exception {
		DataSource dataSource = new HikariDataSource(hikariConfig());
		return dataSource;
	}
	
	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		sqlSessionFactoryBean.setMapperLocations(applicationContext
				.getResource("classpath:/mapper/**/*-mapping.xml"));
		return sqlSessionFactoryBean.getObject();
	}
	
	public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
		return new SqlSessionTemplate(sqlSessionFactory);
	}
}
2. JSP 파일 가져와서 수정
1. applicationContext.properties

- prefix와 suffix 설정

spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
#spring datasource.hikari.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/studydb?serverTimezone=UTC
#spring.datasource.hikari.jdbc-url=jdbc:oracle:thin@localhost:1524:xe
spring.datasource.hikari.username=study
spring.datasource.hikari.password=study
spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL

mybatis.configuration.map-underscore-to-camel-case=true

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
2. 스프링 프레임워크에서 파일 가져오기

1)  js 폴더와 jsp 파일들 복사해오기

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan

2) jsp 파일 더블클릭 >  js 파일 경로 수정 (../ 붙이기)

+ 다국어 처리 지우기

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan

3) 메모장으로 열리는 경우 vs code로 열리도록 설정

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
3. 매핑해주기
1. VO 복사해오기

- BoardVO 

package com.springbook.vo;

import java.sql.Date;

import org.springframework.web.multipart.MultipartFile;

import com.fasterxml.jackson.annotation.JsonIgnore;

public class BoardVO {
	private int seq;
	private String title;
	private String writer;
	private String content;
	private Date regDate;
	private int cnt;
	private String SearchCondition;
	private String SearchKeyword;
	private MultipartFile uploadFile;
	
}

- BoardFileVO

package com.springbook.vo;

public class BoardFileVO {
	private int seq;
	private int fSeq;
	private String originalFileName;
	private String filePath;
	private long fileSize;
}
2. lombok 설치 

- 구글 > lombok 검색 > 설치

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan

- 더블 클릭으로 실행이 안될 시 cmd창으로 실행

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan

- Specify location으로 sts-4 지정 후 Install / Udate > Quit Installer

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan

- Getter, Setter 일일이 써줄 필요가 없어짐 

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
3. 스프링 프레임워크에서 아래 파일들 가져와서 수정

- 먼저 부트에서 각 패키지 생성하고 그 다음 스프링프레임워크에서 파일 복사해서 붙여넣기

- 클래스 내 import 부분 패키지명 변경

- board-mapping.xml 에 타입 명 변경

- 이제 DAO는 필요없음 (mapper 인터페이스만들고 그것을 상속받은 sql매퍼를 만들어서 거기서 dao 역할 해줌)

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
5. 실행 결과
스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
4. 첨부파일 업로드
1. 최신 버전 확인

Maven Repository: Search/Browse/Explore (mvnrepository.com)

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
2. common 파일 설치
스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
3. Refresh

- gradle 파일 수정 후 습관적으로 해주기

스프링부트 오라클 게시판 - seupeulingbuteu olakeul gesipan
4. MvcConfiguration
package com.springbook.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MvcConfiguration implements WebMvcConfigurer {
	@Bean
	public CommonsMultipartResolver multipartResolver() {
		CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
		
		multipartResolver.setDefaultEncoding("UTF-8");
		multipartResolver.setMaxUploadSizePerFile(100 * 1024 * 1024);
		return multipartResolver;
	}
}
5. mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
		<setting name="callSettersOnNulls" value="true"/>
		<setting name="jdbcTypeForNull" value="NULL"/>
	</settings>
</configuration>
6. BoardServiceImpl
package com.springbook.impl;

public class BoardServiceImpl implements BoardService{

	public void insertBoardFileList(List<BoardFileVO> fileList) {
		for(BoardFileVO vo : fileList) {
			boardMapper.insertBoardFileList(fileList);
		}		
	}