MyBatis

211015(금) MyBatis 1일차

구름이팡팡 2021. 10. 15. 12:11
728x90

<myBatis>

*** SQL문과 자바코드를 분리 : 자바파일에 SQL문장이 1도 있으면 안된다!!!

이제 일반 자바파일에선 SQL 없다~!!!  -> xml 파일로 SQL 문장 옮긴다

 

=> DB 쪽 손질이지 WEB이랑 연관 X

 

 

ORM(Object Relational Mapping) 프레임워크는 데이터베이스와 객체와의 관계를 자동으로 맵핑(DTO)시켜 퍼시스턴스 로직 처리를 도와주는 프레임워크이다.

cf) ORM 중 myBatis를 학습하는 것!

이거 쓰지 말아라는 뜻 => 자동으로 해줄게!
전제조건은 DAO와 DTO의 변수명이 같아야하는 것이다~!!!!

대표적으로 iBatishibernate, JPA가 있다

(iBatis는 저세상 갔음)

 

myBatisSQL쿼리문, 예외처리, 트랙잭션 관리들을 XML형식으로 관리한다

POJO(Plain Old Java Object)객체와 테이블의 컬럼들을 편리하고 빠르고 정확하게 매칭할 수 있다.

cf) POJO: 자바의 일반클래스 :DTO - 오브젝트만 상속받고(상속없으면 자동) 상속받은거 없는거

 

<myBatis의 목적> -중요!

myBatis의 목표와 특징은 쉽고, 간단하고, 의존성이 적다는 것이다

SQL문과 자바코드를 분리함으로 인해 자바 개발자는 쿼리문을 신경 쓰지 않아도 된다.

 

myBatis는 자바오브젝트와 SQL문 사이의 자동 매핑 기능을 지원하는 ORM 프레임워크이다

자바코드와 SQL를 분리하므로서 SQL문의 변경이 있을 때 마다 자바를 수정하지 않아도 되고 컴파일을 하지 않아도 된다


<설치>

https://blog.mybatis.org

한국어버전도 있다
내장된 PDF에 이런것이 있다!


<이클립스에 자르파일 넣기>

 

- Java Project : mybatisTest (다이나믹 웹 프로젝트 아님~~)

셋다 빌드패스!!

cf) 다이나믹 웹처럼 자동으로 만들어진 lib는 안해도 되는데 이건 내가 직접만들었으니까

참조하려면 빌드패스 수동으로 해줘야한따~!

 

 

Package : user.main

Class : UserMain.java (public static void main(String[] args)

------------

Package : user.service

Interface : UserService.java - public void execute(); (추상메소드)

cf) 결합도를 낮추기 위해 인터페이스 이용!

Class : UserInsertService.java

UserSelectService.java

UserUpdateService.java

UserDeleteService.java

UserSearchService.java

------------

Package : user.bean

UserDTO.java

Package : user.dao

UserDAO.java

userMapper.xml

 

src : mybatis-config.xml (환경설정)

 

테이블 작성

 

create table usertable(

name varchar2(30) not null,

id varchar2(30) primary key,

pwd varchar2(30) not null);


<맵핑 - 변수명 동일하지 않을 때>

맵핑하려면 변수명이 모두 같아야한다~~!!

cf) 이거 실무에서 매우 중요!! 연결돼서 이용되는 데이터들 변수명 통일 !! 나중에 고생안하려면 잘 알아두고 습관들여놓자!

무조건 같게!!!! 다르면 맵핑이 안된다!

- resultType : 가지고 나갈 값이 있을 때 쓰는 것!!!! 그래서 insert같은애들은 없는것이다~~

들어올때는 parameterType은 가져올때 !!!~~~~ 다 뜻이 내포되어 있다


<MyBais 개념>

원래이랬지만
이제 JDBC 필요없다 !!!! -> 마이바티스 이용~!!!! 근데 또 나중에는 스프링한테 뺏긴다

- 이제 JDBC 필요없다 !!!! -> 마이바티스 이용~!!!! 근데 또 나중에는 스프링한테 뺏긴다

 

- DAO는 이제 마이 바티스에 접근하는 용도!


<xml설정>

DTD 이런거 손으로 쓰지 말고 PDF에서 복사해온다!


<SqlSessionFactory / SqlSession>

sqlSessionFactory가 있어야 sqlSession사용가능

 

- sqlSessionFactory가 xml의 config를 1번 읽어낸다! => 생성자로 처리 

 

cf) 읽어들일때 IO Stream 둘다이용가능

 

참고 - 얘는 InputStream으로

cf) 네임스페이스로 이용

ex) DAO - mepper.xml

- 자동으로 맵핑 해준다


<입력완성>

1. config.xml

mapper 쪽 : 경로만 . -> /로 바꿔줌

2. DAO

DAO

3. mapper.xml  ->DAO에 자동 맵핑

- #{ } 는 물음표 대신 쓰는 공식~!!!


<출력완성>

 

cf)

 

728x90