본문 바로가기

Dev/[Java]

[DBMS] 7-2. Mybatis 연동후 MariaDB와 붙여서 CRUD작성(첨부터 해보기)-2

반응형

완성 소스코드(DA)O)

package jdbc.book.dao;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import jdbc.book.vo.BookVO;

public class BookDAO {

	private SqlSessionFactory sqlSessionFactory;

	public BookDAO() {
		// 이제 이만큼은 안해도된다.
		// 최초에 한번만 하면된다..
		String resource = "SqlMapConfig.xml";
		try {
			InputStream inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

		} catch (IOException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}

	// Book 1건 조회
	public BookVO getBook(String bookid) {
		BookVO book = null;
		SqlSession session = sqlSessionFactory.openSession();

		try {
			book = session.selectOne("userNS.selectBookByBookid", bookid);
		} finally {
			session.close();
		}

		return book;
	}

	// Book List 조회
	// select * from books order by id;
	public List<BookVO> getBookList() {
		List<BookVO> books = null;
		SqlSession session = sqlSessionFactory.openSession();

		try {
			books = session.selectList("userNS.selectBookList");
		} finally {
			session.close();
		}
		return books;
	}

	// insert
	// insert into books(bookid,bookname,author,genre)
	// value(#{bookid},#{bookname},#{author},#{genre});
	public int insertBook(BookVO book) {
		int insertResult = 0;

		SqlSession session = sqlSessionFactory.openSession();
		try {
			insertResult = session.insert("userNS.insertBook", book);
			if (insertResult > 0) {
				session.commit();
			} else {
				session.rollback();
			}
		} catch (Exception e) {
			// insert 실패시
			session.rollback();
			e.printStackTrace();
		} finally {
			session.close();
		}
		return insertResult;
	}

	// update
	// update books set
	// name = #{bookname},
	// gender= #{author},
	// city = #{genre}
	// where bookid = #{bookid};

	public int updateBook(BookVO book) {
		int updateResult = 0;
		SqlSession session = sqlSessionFactory.openSession();
		try {
			Connection con = session.getConnection();
			// auto commit 모드 해제
			con.setAutoCommit(false);
			updateResult = session.insert("userNS.updateBook", book);
			session.commit();

			if (updateResult > 0) {
				session.commit();
			} else {
				session.rollback();
			}
		} catch (Exception e) {
			// insert 실패시
			session.rollback();
			e.printStackTrace();
		} finally {
			session.close();
		}
		return updateResult;
	}

	// delete
	public int deleteBook(int bookid) {
		int deleteResult = 0;
		SqlSession session = sqlSessionFactory.openSession();

		try {
			Connection con = session.getConnection();
			// auto commit 모드 해제
			con.setAutoCommit(false);
			deleteResult = session.delete("userNS.deleteBook", bookid);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}

		return deleteResult;
	}

}

 

완성 소스코드(Junit)

package jdbc.book.test;

import static org.junit.Assert.assertEquals;

import java.util.List;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

import jdbc.book.dao.BookDAO;
import jdbc.book.vo.BookVO;

public class BookTest {

	BookDAO dao;

	@Before
	public void init() {
		dao = new BookDAO();
	}

	@Test
	@Ignore
	public void getBook() {
		BookVO book = dao.getBook("stock");
		System.out.println(book);
	}

	@Test
	@Ignore
	public void getBookList() {
		List<BookVO> books = dao.getBookList();

		for (BookVO bookVO : books) {
			System.out.println(bookVO);
		}
	}

	@Test
	@Ignore
	public void insertBook() {
		BookVO book = new BookVO("health", "운동책", "숀리", "건강");
		int insertCount = dao.insertBook(book);
		assertEquals(1, insertCount);

	}

	@Test
	@Ignore
	public void updateBook() {
		BookVO book = new BookVO("health", "운동책22", "숀리22", "건강22");
		int updateCount = dao.updateBook(book);
		assertEquals(1, updateCount);

	}

	@Test
	public void deleteBook() {
		int deleteCount = dao.deleteBook(4);
		assertEquals(1, deleteCount);
	}

}

 

 

 

 

결국 정리하자면...

1. Dynamic Web Project 생성..

2. Maven 연동

3. POM에 Dependency 추가(MyBatis, MySql driver)

4. BuildPath에 JUnit추가

5. db.properties, SqlMapConfig.xml, XXMapper.xml 총 3가지 파일 추가하기

6. VO 클래스 작성, 데이터베이스 테이블 작성

7. Mapping 하기..db.properties, SqlMapConfig.xml, XXMapper.xml 세가지 문서 작성하는 것을 말한다..

8. Mapper.xml파일에 쿼리문 작성해주기

9. DAO 클래스 작성.. 여기다가는 구현을 해주면 된다..

순서는.. 

(1) 팩토리 객체생성!

(2) 생성자에서 팩토리 객체 빌드!

(3) 각 쿼리문에 맞는 메서드 작성!

 

10. 이후 하나하나 개발할 때 마다 테스트하기

 

이 규칙을 지키면 된다......

 

 

 

반응형