-
MyBatis - 데이터 삽입하기MyBatis 2019. 2. 4. 17:30
Mybatis를 이용하여 데이터베이스에 데이터를 삽입해보겠습니다.
이 글을 보시기 전에 mybatis 설정이 안되있다면 MyBatis 시작하기 를 참고하세요데이터베이스에 테이블과 시퀀스 생성하기
데이터를 삽입하기 위해 아래와 같은 테이블과 시퀀스를 생성합니다.
create table student( student_no number primary key, student_name varchar2(30) not null, student_tel char(11) not null, student_email varchar2(50), student_addr varchar2(256), reg_date date default sysdate ); create sequence seq_student;
가상의 데이터도 하나 넣어줍니다.
insert into student values (seq_student.nextval, '홍길동', '01012345678', 'honggd@google.com','서울시 강남구', default);
데이터가 잘 들어가 있습니다.
테스트 클래스 만들기
MVC 구조를 이용하여 몇가지 클래스들을 만들겠습니다.
컨트롤러를 담당하는 MybatisTestServlet 서블릿 입니다.
@WebServlet("/mybatis.do") public class MybatisTestServlet extends HttpServlet { private static final long serialVersionUID = 1L; private MyBatisService service = new MyBatisService(); public MybatisTestServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int result = service.insertStudent(); String msg = result > 0 ? "입력 완료" : "입력 실패"; response.setContentType("text/html;charset=UTF-8"); response.getWriter().append(msg); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
트랜잭션 처리를 해줄 MyBatisService 클래스입니다.
import static common.SqlSessionTemplate.getSession; public class MyBatisService { private MyBatisDao dao = new MyBatisDao(); public int insertStudent() { SqlSession session = getSession(); int result = dao.insertStudent(session); if(result > 0) { session.commit(); }else { session.rollback(); } session.close(); return result; } }
예전에 만들어두었던 SqlSessionTemplate 를 이용하여 SqlSession을 받아옵니다.
DB와 통신하는 MybatisDao 클래스입니다.
public class MyBatisDao { public int insertStudent(SqlSession session) { int result = session.insert("mybatis.insertStudent"); return result; } }
JDBC를 이용하여 작성할 때보다 간편해진 것을 볼 수 있습니다.
mapper 작성하기
resource 폴더 밑에 mybatis\mapper 로 폴더를 생성합니다. (resource\mybatis\mapper 의 경로가 됩니다.)
mapper 폴더에 mybatis-mapper.xml 파일을 생성합시다.우클릭 - New - Other를 선택합니다.
xml로 검색하여 XML File을 선택합니다.
파일 이름은 mybatis-mapper.xml 로 적고 Next를 누릅니다.
DTD 파일을 선택하고 Next를 누릅니다.
XML Catalog entry 를 선택한 후 DTD Mapper를 선택합니다.
이미지와 같은 화면이 나오시면 됩니다. Finish를 눌러 완료합니다.
xml 파일이 생성되었습니다. chche-ref 태그는 사용하지 않을 것이니 지워줍니다.
mapper 태그를 아래와 같이 작성합니다.
<mapper namespace="mybatis"> <insert id="insertStudent"> INSERT INTO STUDENT VALUES(SEQ_STUDENT.NEXTVAL, '둘리', '01012345678', 'ABCD@NAVER.COM', '경기도 성남시', DEFAULT) </insert> </mapper>
insert SQL 이 작성되었습니다.
mapper 태그의 namespace와 insert 태그의 id 값은 위에서 작성한 Dao 에서 사용하는 id 값과 동일해야 합니다.
따라서 namespace 는 mybatis, id 값은 insertStudent를 적어주었습니다.index.jsp 작성하기
테스트 서블릿으로 가는 링크를 가진 jsp 파일을 만들겠습니다.
body 태그 안에 간단하게 a 태그만 넣어주었습니다<a href="<%=request.getContextPath() %>/mybatis.do">테스트 하기</a>
잘 동작하는지 확인해보기
student 테이블에는 아직 하나의 데이터만 들어있습니다.
테스트 하기 링크를 눌러봅시다.
입력 완료가 출력 되었다.
정말 데이터가 삽입되었는지 DB에서 확인해보자.데이터가 잘 들어갔다.
반응형'MyBatis' 카테고리의 다른 글
MyBatis - 페이징 처리 (0) 2019.02.17 MyBatis - 동적 쿼리 사용하기 (0) 2019.02.12 MyBatis - 데이터를 삽입하는 방법들 (0) 2019.02.11 MyBatis - 데이터 가져오는 방법들 (2) 2019.02.08 MyBatis 시작하기 (기본 세팅하기) (0) 2019.02.02