방명록
- [스프링] Oracle의 nextval 함수를 MySQL에서 처리하는 방법2022년 06월 20일 22시 02분 34초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
구멍가게 코딩단의 책 "코드로 배우는 스프링 웹 프로젝트(개정판)"으로 Spring legacy project 실습을 하고 있다. 책에서는 Oracle DB를 베이스로 하고 있는데 나의 경우에는 MySQL로 실습 중이다. 190쪽 BoardMapper.xml에 insert 쿼리문이 등장하는데 MySQL에서는 사용할 수 없는 nextval함수를 사용하고 있다. 이대로 실습을 진행했다가는 에러가 뜰게 뻔했고 역시나 그랬다. 구글링 해보니 이 문제에 대한 친절하게 정리된 내용이 있었다.
나는 1번 방법을 적용했고 정상적으로 작동했다. 그런데 MySQL에 테이블 생성 시 PK를 AUTO_INCREMENT 설정했기 때문에 굳이 값을 넣지 않더라도 자동적으로 증가하는 값이 입력된다. 따라서 아직까지는 왜 이렇게 직접적으로 값을 넣어줘야 하는지는 모르겠다. 하지만 '일단 책에서 시키는 대로 해보자'라는 마음이다.
아래는 JUnit테스트 통과 후 콘솔 창에 표시된 정보이다.
INFO : com.dand.mapper.BoardMapperTests - BoardVO(bno=11, title=새로 작성하는 글 select key, content=새로 작성하는 내용 select key, writer=newbie, regdate=null, updatedate=null)
아래는 BoardMapper.xml 코드 전체이다.
<?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="com.dand.mapper.BoardMapper"> <select id="getList" resultType="com.dand.domain.BoardVO"> <![CDATA[ select * from tbl_board where bno > 0 ]]> </select> <insert id="insert"> <!-- insert into tbl_board (bno,title,content,writer) value (seq_board.nextval, #{title}, #{content}, #{writer}) --> insert into tbl_board (title,content,writer) value (#{title}, #{content}, #{writer}) </insert> <insert id="insertSelectKey"> <selectKey keyProperty="bno" order="BEFORE" resultType="long"> <!-- select last_insert_id(); --> select max(bno)+1 from tbl_board </selectKey> <!-- insert into tbl_board (bno,title,content,writer) value (seq_board.nextval, #{title}, #{content}, #{writer}) --> insert into tbl_board (bno,title,content,writer) value (#{bno}, #{title}, #{content}, #{writer}) </insert> </mapper>
728x90반응형'언어·프레임워크 > Spring' 카테고리의 다른 글
[스프링][문제해결] MySQL LIMIT 이용 페이징 처리시 페이지 번호 클릭 이동이 안되는 문제 (0) 2022.06.24 [스프링] MySQL 페이징 처리 쿼리 (0) 2022.06.23 [스프링][문제해결] MariaDB와 log4jdbc 관련 에러 (0) 2022.06.19 [스프링][문제해결] org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): (0) 2022.06.15 [스프링][문제해결] Resource specification not allowed here for source level below 1.7 에러 해결 (0) 2022.06.15 다음글이 없습니다.이전글이 없습니다.댓글