실습 코드 참조
moonhy7/SpringBoot: SpringBoot 실습 코드 정리 (github.com)
1. DB 연동
1. Hikari 연동
- 스프링프레임워크는 설정파일로 boot는 자바 파일로 한다는 차이점
- 스프링에서는 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 파일들 복사해오기
2) jsp 파일 더블클릭 > js 파일 경로 수정 (../ 붙이기)
+ 다국어 처리 지우기
3) 메모장으로 열리는 경우 vs code로 열리도록 설정
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 검색 > 설치
- 더블 클릭으로 실행이 안될 시 cmd창으로 실행
- Specify location으로 sts-4 지정 후 Install / Udate > Quit Installer
- Getter, Setter 일일이 써줄 필요가 없어짐
3. 스프링 프레임워크에서 아래 파일들 가져와서 수정
- 먼저 부트에서 각 패키지 생성하고 그 다음 스프링프레임워크에서 파일 복사해서 붙여넣기
- 클래스 내 import 부분 패키지명 변경
- board-mapping.xml 에 타입 명 변경
- 이제 DAO는 필요없음 (mapper 인터페이스만들고 그것을 상속받은 sql매퍼를 만들어서 거기서 dao 역할 해줌)
5. 실행 결과
4. 첨부파일 업로드
1. 최신 버전 확인
Maven Repository: Search/Browse/Explore (mvnrepository.com)
2. common 파일 설치
3. Refresh
- gradle 파일 수정 후 습관적으로 해주기
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);
}
}
'👨💻 2. 웹개발_Back end > 2-7 Spring Boot' 카테고리의 다른 글
[SpringBoot] 3장 스프링부트 시큐리티(spring boot security) (0) | 2021.11.08 |
---|---|
[SpringBoot] 1장 STS 4 설치 및 프로젝트 생성 (0) | 2021.11.04 |
댓글