
다음은 [일기장] 메뉴이다.

"일기쓰기" 버튼을 누르면 하기와 같이 제목, 일기 내용, 이미지 파일 첨부를 할 수 있는 화면으로 간다.

일기를 한번 써보았다.
세상에서 제일 사랑스러운 우리 호두에 대해 글을 쓰고 호두 사진을 올렸다.



@SessionAttributes("loginUser")
@Controller
@RequestMapping("/diary")
public class DiaryController {
private DiaryService diaryService;
@Autowired
public DiaryController(DiaryService diaryService) {
super();
this.diaryService = diaryService;
}
@GetMapping("/insert")
public String insertfrom() {
return "diary/insertform";
}
@PostMapping("/insert")
public String insertDiary(DiaryDTO diaryDTO, HttpServletRequest request, MultipartFile imgFile, Model model,
HttpSession session) {
System.out.println("imgFile : " + imgFile);
System.out.println("diaryDTO : " + diaryDTO);
String page = "";
/* 파일을 저장할 경로 설정 */
String root = request.getSession().getServletContext().getRealPath("resources");
System.out.println("root : " + root);
String filePath = root + "\\uploadFiles";
File mkdir = new File(filePath);
if (!mkdir.exists()) {
mkdir.mkdirs();
}
/* 파일명 변경 처리 */
String savedName = null;
if (!imgFile.isEmpty()) {
String originFileName = imgFile.getOriginalFilename();
String ext = originFileName.substring(originFileName.lastIndexOf("."));
savedName = UUID.randomUUID().toString().replace("-", "") + ext;
}
/* 파일을 저장한다. */
try {
if (!imgFile.isEmpty()) {
imgFile.transferTo(new File(filePath + "\\" + savedName));
}
UserDTO loginUser = (UserDTO) session.getAttribute("loginUser");
diaryDTO.setImg(savedName);
diaryDTO.setUserId(loginUser.getUserId());
int result = diaryService.insertDiary(diaryDTO);
if (result > 0) {
page = "redirect:/diary/list?page=1";
} else {
page = "common/errorPage";
model.addAttribute("msg", "일기 작성 실패");
}
} catch (Exception e) {
e.printStackTrace();
/* 실패시 파일 삭제 */
new File(filePath + "\\" + savedName).delete();
page = "common/errorPage";
model.addAttribute("msg", "일기 작성 실패");
}
return page;
}
import java.util.ArrayList;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.multi.hodooScheduler.diary.model.dao.DiaryDAO;
import com.multi.hodooScheduler.diary.model.dto.DiaryDTO;
import com.multi.hodooScheduler.diary.model.dto.PageDTO;
@Service
public class DiaryServiceImpl implements DiaryService {
private DiaryDAO diaryDAO;
private SqlSessionTemplate sqlSession;
@Autowired
public DiaryServiceImpl(DiaryDAO diaryDAO, SqlSessionTemplate sqlSession) {
super();
this.diaryDAO = diaryDAO;
this.sqlSession = sqlSession;
}
@Override
public int insertDiary(DiaryDTO diaryDTO) throws Exception {
int result = diaryDAO.insertDiary(sqlSession, diaryDTO);
return result;
}
}
import java.util.ArrayList;
@Repository
public class DiaryDAO {
public int insertDiary(SqlSessionTemplate sqlSession, DiaryDTO diaryDTO) {
return sqlSession.insert("diaryMapper.insertDiary", diaryDTO);
}
}
import java.sql.Date;
public class DiaryDTO {
private int rownum;
private int dno;
private String userId;
private String title;
private String content;
private String img;
private Date createdDate;
public DiaryDTO() {
}
public int getDno() {
return dno;
}
public void setDno(int dno) {
this.dno = dno;
}
public int getRownum() {
return rownum;
}
public void setRownum(int rownum) {
this.rownum = rownum;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
@Override
public String toString() {
return "DiaryDTO [rownum=" + rownum + ", dno=" + dno + ", userId=" + userId + ", title=" + title + ", content="
+ content + ", img=" + img + ", createdDate=" + createdDate + "]";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="diaryMapper">
<resultMap type="diaryDTO" id="diaryResultSet">
<!-- 언더바가 들어가는 쿼리문에 한하여 매핑을 해줘야함 -->
<result property="dno" column="dno" />
<result property="userId" column="user_id" />
<result property="title" column="title" />
<result property="content" column="content" />
<result property="img" column="img" />
<result property="createdDate" column="create_date" />
<!-- <result property="rownum" column="rownum" /> -->
</resultMap>
<insert id="insertDiary" parameterType="diaryDTO">
INSERT INTO
DIARY
(user_id, title, content, img)
VALUES (#{userId}, #{title},
#{content},
#{img})
</insert>
<mapper>
다이어리 조회 및 페이지 이동은 다음 포스팅에 쓰겠다!
특히 페이지네이션... 언제 해도 복잡한 것 같다ㅠㅠ
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.