본문 바로가기
🌈 백엔드/스프링 프레임워크

스프링_MyBatis

by 개발자 알마 2023. 9. 23.
반응형

 

 

[1] MyBatis 


 

 

(1) MyBatis 정의 

SQL Mapping Framework 이다 

자바코드와 SQL을 맵핑해주는 프레임워크 이다 

MyBatis 외에 JPA 도 있다. 

 

MyBatis JPA
쉽다  OOP
심플하다 SQL4 모델링

 

 

 

[2] MyBatis 준비


(1) pom.xml 추가 

maven의 MyBatis와 MyBatis-spring 을 pom.xml 파일에 추가한다. 

 

 

mybaties의 역할은

인터페이스 sqlSessionFactory은 SQL명령을 수행하는데 필요한 메서드를 제공하는 인터페이스 SqlSession을 생성해서 호출한다. 

 

mybaties-spring의 역할은

스프링에서 사용하기 위해서 sqlSessionFactory를 빈으로 등록한다 

sqlSessionTemplate를 이용하여 멀티쓰레드로 Dao를 공유가능하도록 하고 SQL명령을 수행하는데 필요한 메서드 제공한다 

 

 

(2) Bean 등록하기

 

 

 

 

 

[3]MyBatis 특징


(1) XML -> SQL 관리 

자바코드로부터 XML을 이용하여 SQL문을 분리해서 관리한다 

예를 들면 자바코드로 만든 매개변수 설정과 쿼리 결과를 읽어오는 코드를 MyBatis가 대신 한다 

작성할 코드가 줄어서 생산성 향상 + 유지보수 편의성 상승

코드양이 많을수록 에러가 많이 발생할 가능성이 높을수 밖에 없다. 그래서 코드양을 줄이는 방법을 사용하는 것이다.

 

 

(2) 동적쿼리 : 검색기능

동적 쿼리를 사용할수 있게 하는 기능이 있다 

sql 태그를 통해 쿼리문을 바꿀수 있다. 

  동적태그
1 if
2 choose when
otherwise
3 trim where
set
4 foreach

 

title1 이 포함된 모든 값을 조회한다 ---> title1, title10, title11 , title12 .....

 

(mysql의경우 concat을 넣어야한다. 아닌 db는 title1%로 쓴다)

% : 여러글자가 가능 0개 ~n개  'title%' 는 title,title1,title2 ..가능

_ : 한글자만 가능 1개 'title_'는 title은 불가 title1만 가능

 

 

title1 이 제외된 모든 값을 조회한다 ---> title1, title10, title11 , title12 .....을 제외한 모든 값 

 

 

if 태그를 통해 조건을 통해 내용 , 제목을 검색할수 있게 설정할수 있다

title 1, title2 , title3 에 해당하는 조건을 맞다면 조회하기 

 

bno가 33,34,35, 36이 있으면 조회한다 

bno가 33,34,35, 36이 있으면 빼고 조회한다 

 

if문 대신 choose 태그를 통해 중복되는 조건을 설정할수 있다  

IN - <foreach> 배열을 표현할수 있다  

 

 

order by bno은 정렬하기 

 

 

 

 

 

(3) sqlSession 메서드 사용  

int insert(String statement)
int insert(String statement, Object parameter)
insert문 실행하여 그 행의 갯수를 반환한다 
int delete(String statement)
int delete(String statement, Object parameter)
delete문 실행하여 그 행의 갯수를 반환한다 
int update(String statement)
int update(String statement, Object parameter)
update문 실행하여 그 행의 갯수를 반환한다 
T selectOne(String statement)
T selectOne(String statement, Object parameter)
하나의 행을 반환하는 select에 사용하고 
paramter로 SQL에 binding 될 값을 제공한다 
List<E> selectList(String statement)
List<E> selectList(String statement,Object parameter)
여러행을 반환하는 select에 사용하고
paramter로 SQL에 binding 될 값을 제공한다 
Map<K,V> selectMap(String statement, String keyCol)
Map<k,v> selectMap(String statement, String keyCol, Object parameter)
여러행을 반환하는 select에 사용하고
keyCol에 Map의 key로 사용할 컬럼을 지정한다

 

 

 

반응형

댓글