테이블 생성 시 filesize가 누락되어 추가하여야 하고, regdate도 있으면 좋다.
새 프로젝트 생성
pom.xml
<!-- 사용자 지정 의존성 추가 시작 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.58</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!-- 사용자 지정 의존성 추가 끝 -->
-- 상품테이블
create table product (
product_code int primary key --상품번호
,product_name varchar(100) not null --상품명
,description varchar(2000) --상품내용
,price int default 0 --상품가격
,filename varchar(500) --파일명
);
-- 상품 시퀀스
create sequence product_seq;
commit;
application.properties
인코딩
server.port=9095
#주의사항 JSP, Thymeleaf, Mustache는 공통으로 사용할 수 없음
#JSP를 뷰페이지로 사용할 경우 pom.xml에 라이브러리 추가해야 함
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
#JSP페이지가 수정이 되면 자동으로 서버 재시작
server.servlet.jsp.init-parameters.development = true
#파일 업로드 용량 제한 설정
spring.servlet.multipart.max-file-size = 500MB
spring.servlet.multipart.max-request-size = 500MB
#오라클 DB 환경 설정
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
모든 xml 파일에 대해 객체화를 해주기 위해 mappers 폴더에 xml문서를 모아둔다. 이를 위해 시작 클래스에서 설정을 해줘야 한다.
Spring07MyshopApplication.java
package kr.co.itwill;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@SpringBootApplication
public class Spring07MyshopApplication {
public static void main(String[] args) {
SpringApplication.run(Spring07MyshopApplication.class, args);
}//main() end
//참조) spring05_mybatis 프로젝트 MemMainTest 클래스
//Mapper 객체 생성
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*.xml");
bean.setMapperLocations(res);
return bean.getObject();
}//sqlSessionFactory() end
@Bean
public SqlSessionTemplate sqlSession(SqlSessionFactory factory) {
return new SqlSessionTemplate(factory);
}//sqlSession() end
}//class end
HomeController.java
package kr.co.itwill;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
public HomeController() {
System.out.println("-----HomeController() 객체 생성됨");
}
/*
spring07_myshop 프로젝트의 첫 페이지 호출
http://localhost:9095
*/
@RequestMapping("/")
public ModelAndView home() {
ModelAndView mav = new ModelAndView();
//redirect : 등록한 명령어를 호출할 수 있다
mav.setViewName("redirect:/product/list");
return mav;
}//home() end
}//class end
생성
ProductDAO.java
package kr.co.itwill.product;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class ProductDAO {
public ProductDAO() {
System.out.println("-----ProductDAO() 객체 생성됨");
}//end
//스프링 빈으로 생성된 객체를 가져와서 연결하기
@Autowired
SqlSession sqlSession;
}//class end
ProductCont.java
package kr.co.itwill.product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
public class ProductCont {
public ProductCont() {
System.out.println("-----ProductCont() 객체 생성됨");
}
@Autowired
ProductDAO productDao;
}//class end