[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로 사용할 컬럼을 지정한다 |
'🌈 백엔드 > 스프링 프레임워크' 카테고리의 다른 글
lombok 활용하기 (8) | 2023.11.27 |
---|---|
스프링_DTO (0) | 2023.10.01 |
스프링_ 데이터 객체 DAO + 트랜잭션 서비스 (0) | 2023.09.10 |
스프링 _ 데이터 객체 DAO + 트랜잭션 매니저 @Transitional (0) | 2023.09.09 |
스프링_테스트_JUnit 실행 (0) | 2023.09.07 |
댓글