본문 바로가기
스프링 게시판

스프링 게시판 만들기 1 글쓰기 / 스프링 파일 업로드 / 스프링 다중파일 업로드/마이바티스 collection사용

by 뇽꾸리 2020. 4. 26.
반응형

BoardVO 

 

package com.spring.crazy.model;

import java.sql.Date;

import org.springframework.stereotype.Component;

@Component
public class CrazyBoardVO {

private int bno;   // 번호
private String subject;   // 제목
private String username;  // 이름
private String writer;  //작성자
private String content;  //내용
private Date regdate; //등록일
private int viewcnt;  //조회수
private String filename; //파일이름
private String filepath; //파일경로

public int getBno() {
return bno;
}

public void setBno(int bno) {
this.bno = bno;
}

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getWriter() {
return writer;
}

public void setWriter(String writer) {
this.writer = writer;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public Date getRegdate() {
return regdate;
}

public void setRegdate(Date regdate) {
this.regdate = regdate;
}

public int getViewcnt() {
return viewcnt;
}

public void setViewcnt(int viewcnt) {
this.viewcnt = viewcnt;
}

public String getFilename() {
return filename;
}

public void setFilename(String filename) {
this.filename = filename;
}

public String getFilepath() {
return filepath;
}

public void setFilepath(String filepath) {
this.filepath = filepath;
}

@Override
public String toString() {
return "CrazyBoardVO [bno=" + bno + ", subject=" + subject + ", username=" + username + ", writer=" + writer
+ ", content=" + content + ", regdate=" + regdate + ", viewcnt=" + viewcnt + ", filename=" + filename
+ ", filepath=" + filepath + "]";
}

}

 

Boarddao 

public void crazywrite(CrazyBoardVO vo,List list)throws Exception;

 

@Repository

BoardDAOImpl

 

@Inject
SqlSession session;

 

@Transactional
@Override
public void crazywrite(CrazyBoardVO vo,List list) throws Exception {
// TODO Auto-generated method stub
session.insert("crazy.crazywrite",vo);


if(list==null){
System.out.println("list files == null");
}else {
session.insert("crazy.addattach",list);
}
}

 

BoardService

public void crazywrite(CrazyBoardVO vo,List attachlist)throws Exception;

 

@Service

BoardServiceImpl

 

@Inject
CrazyBoardDAO dao;

 

@Override
public void crazywrite(CrazyBoardVO vo, List attachlist) throws Exception {
// TODO Auto-generated method stub

dao.crazywrite(vo, attachlist);

}

 

 

BoardController

@Inject
	CrazyBoardService service;

@RequestMapping(value="/crazywrite.do",method=RequestMethod.POST)
	public String crazywriteaction(CrazyBoardVO vo,HttpSession session,MultipartHttpServletRequest request,List<MultipartFile> file)throws Exception{
		String filenames = "";
		File directory = new File(filepath);
		if(!directory.isDirectory()) {
			directory.mkdir();
			System.out.println(directory);
		}
				List<MultipartFile> fileList = request.getFiles("file");
				for(MultipartFile filepart : fileList) {
					filenames = filepart.getOriginalFilename();
					String savepath = filepath+"//"+filenames;
					if(!filenames.equals("")) { 
						FileOutputStream fs = new FileOutputStream(savepath);
						fs.write(filepart.getBytes());
						fs.close();
					
					}else {
					
					}	
				}
				
				List<CrazyBoardVO> attachlist = new ArrayList<CrazyBoardVO>();
				for(int i = 0; i<file.size(); i++) {
					CrazyBoardVO cvo = new CrazyBoardVO();
					String filename = file.get(i).getOriginalFilename();
					System.out.println("file + i  : "+filename); 
					System.out.println(file.size()); 
					if(i>=file.size()) {		
					}else {
						cvo.setFilename(filename);
						cvo.setFilepath(filepath);		
					}
					attachlist.add(cvo);
				}
				String writer = (String) session.getAttribute("userid");
				vo.setWriter(writer);
				service.crazywrite(vo,attachlist);
				
		
		return "redirect:/crazyboard.do";
	}

 

mybatis (oracle)

<insert id="addattach" parameterType="java.util.List">
		<foreach item="addvo" collection="list" separator=""
			close="select * from dual" open="insert all">
			into
			attach(
			bno
			,filepath
			,filename
			,regdate)
			values(
			crazyboard_seq.currval,
			#{addvo.filepath},
			#{addvo.filename},
			sysdate
			)
		</foreach>
	</insert>
    
    <insert id="crazywrite">
		insert into
		crazyboard(bno,writer,subject,content,regdate)
		values(crazyboard_seq.nextval,#{writer},#{subject},#{content},sysdate)
	</insert>
반응형

댓글