create table mou_album(
ano number(10), -- 게시물 번호
id VARCHAR2(50) NOT NULL,
title VARCHAR2(500) NOT NULL,
content VARCHAR2(500) NOT NULL,
imageFileName varchar2(100) NOT NULL,
uploadDate date DEFAULT sysdate,
constraint pk_album primary key(ano)
);
database에서 ano를 불러오기 위한 과정에서 오류가 발생하였다 😥
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Builder
public class AlbumVO {
private Long ano;
private String id;
private String title;
private String content;
private String imageFileName;
private Date uploadDate;
}
JSP 웹 구현 과정에서는 database에서 게시물 번호를 int 타입으로 전달받도록 필드에 선언하였지만
Spring Framework를 이용한 구현 과정에서는 게시물 번호를 Long 타입으로 전달받도록 필드에 선언하였다.
int 타입이 아닌 Long 타입으로 선언해서 데이터를 사용하기로 한 이유는
Long 타입으로 받아오게되면 null 값도 전달받을 수 있기 때문이었는데,
실제 게시물 번호를 반환하는 메서드, Mapper에서 resultType을 int 타입으로 설정하여
Long → int 변환 시 타입을 변환하는 과정에서 null값으로 인해 오류가 발생한 것이다.
<select id="getLastAno" resultType="String">
select max(ano) as photoNO from mou_album
</select>
고민끝에 null 값을 받을 수 있도록 먼저 Mapper에서 반환 타입을 String으로 설정하였다.
public int getNewAno() {
int photoNO = 0;
int lastPhotoNO = albumDAO.getLastAno();
photoNO = lastPhotoNO + 1;
if(photoNO == 0) {
photoNO = 1;
}
return photoNO;
}
↓
public int getNewAno() {
int photoNO = 0;
int lastPhotoNO;
if (albumDAO.getLastAno() == null) {
lastPhotoNO = 0;
return 1;
}
lastPhotoNO = Integer.parseInt(albumDAO.getLastAno());
photoNO = lastPhotoNO + 1;
return photoNO;
}
String 타입으로 받은 데이터가 null일 경우 게시물 번호를 1번으로 부여하고,
null이 아닌 경우 마지막 게시물 번호에 1을 더해 반환하도록 코드를 수정하였다.
album을 구현하기 전 Board, Q&A 게시판 기능을 구현할 때에도 같은 방식을 사용하였는데,
Board, Q&A 게시판의 경우 database에서 임의로 다수의 데이터를 삽입해 둔 상태로 기능을 구현하는 바람에
table에 저장된 data가 없는 경우를 미처 생각하지 못하고 코드를 작성했던 것이 문제였다😂
앞으로도 해결해야 할 오류들이 많겠지만 차근차근 하나씩 잘 해결해보기로!
'Project > My only universe(Spring framework)' 카테고리의 다른 글
| BootStrap을 활용한 navbar에서 menu 글자 위치 조정하기(중앙, 우측 정렬) (0) | 2023.03.28 |
|---|---|
| JSON 형태의 데이터 반환, @ResponseBody, @RequestBody 어노테이션 (0) | 2023.03.28 |
| [Error] Login 기능 구현 중 Parameter 송신 오류 및 결과값 타입 변환 오류 (0) | 2023.03.24 |
| [3월 4주 차] 프로젝트 시작 후 24일째, 진행 상황 중간 점검 (0) | 2023.03.22 |
| My Only Universe 소개 🚀 (0) | 2023.03.21 |