org.apache.ibatis.binding.BindingException
는 MyBatis 에서 Mapper 인터페이스 메서드가 잘못된 반환 타입을가지고 있을때 발생한다.
MyBatis는 Mapper 메서드에서 지정된 SQL 쿼리를 실행한 후, 결과를 해당 메서드의 반환 타입으로 자동으로 매핑해주는데, INSERT, UPDATE, DELETE와 같은 DML 쿼리에서는 기본적으로 정수 타입(int), 즉 영향을 받은 레코드의 개수를 반환합니다. 하지만 여기서 반환 타입으로 BoardDTO 객체가 설정되어 있어서 오류가 발생한 것이다.
발생 예시 코드
DAO
BoardDTO write(BoardDTO boardDto);
mapper
<insert
useGeneratedKeys="true"
keyColumn="idx"
keyProperty="idx"
id="write" parameterType="kr.co.gudi.dto.BoardDTO">
INSERT INTO board(user_name, subject, content)
VALUES(#{user_name}, #{subject}, #{content})
</insert>
수정
DAO
int write(BoardDTO boardDto);
※ 참고
service 코드
public int write(MultipartFile[] files, BoardDTO boardDto) {
int row = board_dao.write(boardDto);
BoardDTO dto = new BoardDTO();
int idx = dto.getIdx();
logger.info("insert 된 행 수 : "+row);
logger.info("받아온 idx : "+idx);
if(idx > 0) {
fileSave(files, idx);
}
return idx;
}