Database/myBatis

myBatisTest / drill

liebert 2022. 5. 26. 00:53

Idea에 정리한 myBatis working procedure 리마인드.

 

(0) config.xml로 connection pool 생성 해준 후, mapper.xml 관련 정보를 포함시켜준다.

(1) UserMain 사용자 입력 받기

public void menu() {
		UserService userService = null;
		Scanner scan = new Scanner(System.in);
		int num = 0;
		
		while(true) {
			System.out.println();
			System.out.println("*************");
			System.out.println("       1. 입력");
			System.out.println("       2. 출력");
			System.out.println("       3. 수정");
			System.out.println("       4. 삭제");
			System.out.println("       5. 검색");
			System.out.println("       6. 끝");
			System.out.println("*************");
			System.out.print("    번호 : ");
			num = scan.nextInt();

 

(2) UserService로 넘어간다. 

 

UserService 는 각 메서드를 가진 insert, delete, search, selectservice 자바 페이지의 인터페이스가 들어간다.

- mvc에서 servlet 쓰다오니까 헷갈린다. usermain -> userservice -> userinsertservice -> userDAO 순이다.

package user.service;

public interface UserService {
	public void excute();
}

(3) UserInsert/Delete/Update/SearchService 

 

UserMain에서 사용자 입력값은 else 조건문으로 받았고, DAO를 통해 database에 값을 저장시킨다.

각 service 클래스의 execute를 불러와서 실행시킨다.

public class UserInsertService implements UserService {

	@Override
	public void excute() {
		Scanner scan = new Scanner(System.in);
		
		System.out.print("이름 :");
		String name = scan.next();
		
		System.out.print("아이디 :");
		String id = scan.next();
		
		System.out.print("비밀번호 :");
		String pwd = scan.next();
		
		//name, id pwd를 UserDTO에 담기
		UserDTO userDTO = new UserDTO();
		userDTO.setName(name);
		userDTO.setId(id);
		userDTO.setPwd(pwd);

		//DB
		UserDAO userDAO = new UserDAO();
		userDAO.write(userDTO);
		
		//응답
		System.out.println("데이터를 저장하였습니다.");
	}

}

 

(4) Data access object 구동 방식.

DB 직접 접근 안하고 간접적으로 datasource에 요청하는것 확인

	public UserDAO() {
		try {
			Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); // src 라는 말은 default로 설정되어있다
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}