반응형
테이블 추가
▶attach 테이블
create table attach(
uuid varchar(100) primary key,
uploadPath varchar(200) not null,
fileName varchar(100) not null,
fileType char(3) default 'I',
board_id bigint
);
ALTER TABLE attach ADD FOREIGN KEY(board_id) REFERENCES board(id);
- uuid: UUID가 포함된 파일 이름
- uploadPath: 실제 파일이 업로드된 경로
- fileName: 파일 이름
- fileType: 파일 종류, 이미지 파일 여부 확인
- board_id: 해당 게시물 번호 저장(board 테이블, 외래키 역할)
DTO
▶BoardAttach.java
package com.spring.boardapp.domain;
public class BoardAttach {
private String uuid;
private String uploadPath;
private String fileName;
private boolean fileType;
private String bno;
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getUploadPath() {
return uploadPath;
}
public void setUploadPath(String uploadPath) {
this.uploadPath = uploadPath;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public boolean isFileType() {
return fileType;
}
public void setFileType(boolean fileType) {
this.fileType = fileType;
}
public String getBno() {
return bno;
}
public void setBno(String bno) {
this.bno = bno;
}
}
▶Board.java 수정
게시글에 포함된 여러 개의 첨부파일을 다루기 위해서 Board.java에 List<BoardAttac>를 추가해준다.
package com.spring.boardapp.domain;
import java.util.List;
public class Board {
private String id;
private String title;
private String content;
private String writer;
private String views;
private String regist_datetime;
private String modify_datetime;
private int reply_cnt;
private List<BoardAttach> attachList;
...
public List<BoardAttach> getAttachList() {
return attachList;
}
public void setAttachList(List<BoardAttach> attachList) {
this.attachList = attachList;
}
}
DAO
▶인터페이스
package com.spring.boardapp.dao;
import java.util.List;
public interface BoardAttachDao {
public void insert(BoardAttach boardAttach);
public void delete(String uuid);
public List<BoardAttach> findBoardAttach(String board_id);
}
특정 게시물의 번호로 첨부파일들을 찾는다.
▶BoardAttachDaoImpl
package com.spring.boardapp.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
public class BoardAttachDaoImpl implements BoardAttachDao {
@Autowired
private SqlSession sqlSession;
@Override
public void insert(BoardAttachDao boardAttach) {
// TODO Auto-generated method stub
sqlSession.insert("insert", boardAttach);
}
@Override
public void delete(String uuid) {
sqlSession.delete("uuid", uuid);
}
@Override
public List<BoardAttachDao> findBoardAttach(String board_id) {
// TODO Auto-generated method stub
return sqlSession.selectList("findBoardAttach", board_id);
}
}
Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spring.boardapp.dao.BoardAttachDao">
<insert id="insert">
INSERT INTO attach (uuid,
uploadpath,
filename,
filetype,
board_id)
VALUES (#{uuid},
#{uploadpath},
#{filename},
#{filetype},
#{board_id})
</insert>
<delete id="delete">
DELETE FROM attach WHERE uuid = #{uuid}
</delete>
<select id="findBoardAttach">
SELECT *
FROM attach
WHERE board_id = #{board_id}
</select>
</mapper>
View
첨부파일 처리는 Ajax로 이루어진다.
첨부파일이 생성되서 등록되는 것도 게시물이 등록될 때 같이 되는 것이므로 기존 Board의 등록 뷰(boardRegister)에 작성되어야 한다.
▶boardRegister.jsp
...
<input type="reset" value="초기화" />
<input type="submit" value="등록" /></td>
</tr>
</table>
</form>
<!-- 첨부 파일 등록 추가 -->
<div>File Attach</div>
<div>
<div class="uploadDiv">
<input type="file" name='uploadFile' multiple>
</div>
<div class='uploadResult'>
<ul>
</ul>
</div>
</div>
반응형
'ETC' 카테고리의 다른 글
스프링 시큐리티를 이용한 로그인 (0) | 2022.09.30 |
---|---|
Spring + Ajax 파일 다운로드 시 Internet Explorer, Edge에서 한글이름 깨짐 (0) | 2022.09.26 |
Spring + Ajax 파일 다운로드 (0) | 2022.09.26 |
Spring + Ajax 섬네일 파일 생성, 이미지 파일인지 구분, 이미지 클릭 시 원본 이미지 출력 (0) | 2022.09.25 |
Spring + Ajax 중복된 파일 이름 해결 (0) | 2022.09.25 |