여니의 성장 diary
728x90
반응형
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가 없는 경우를 미처 생각하지 못하고 코드를 작성했던 것이 문제였다😂

 

앞으로도 해결해야 할 오류들이 많겠지만 차근차근 하나씩 잘 해결해보기로!

728x90
반응형
profile

여니의 성장 diary

@pponyo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!