Mybatis CRUD
CRUD : 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다.
- INSERT
- SELECT
- UPDATE
- DELETE
▶ Mybatis로 Insert
회원가입 폼(memberInsert.html)에서 받은 값(요청)을 컨트롤러에서 수행하여 메소드를 처리하고, 결과를 리턴해준다.
m/memberInsert.html
post 메소드 타입으로 /addMember 경로로 입력 value를 받아서 넘긴다.
컨트롤러에서 해당 경로를 맵핑하여 메소드를 실행한다.
폼 액션 방식이 Post 방식이기 때문에 맵핑 어노테이션?도 @PostMapping 으로 설정해준다.
메소드를 실행(호출)하고, member 객체를 매개값으로 넣어 서비스단의 메소드를 실행한다.
서비스 메소드에서는 트랜잭션을 시작하고, 오류가 났을때 롤백을 대비한다.
memberMapper 인터페이스의 addMember 추상메소드를 호출하여 값을 리턴한다.
추상메소드는 mapper폴더의 MemberMapper.xml 에서 쿼리를 구현함으로써 구현된다.
xml 에서 insert태그로 sql INSERT 쿼리를 실행할수 있다.
id에 호출한 메소드의 이름을 넣고, parameterType에 Member 객체를 가져와서, insert 속성의 값으로 넣는다.
컨트롤러 에서 insert 구문의 성공여부(int type)을 받고 입력 상황을 확인할 수 있고, url의 주소를 리턴하여 포워드 하면 회원가입 완료 (또는 실패) 후 index.html 페이지로 돌아간다.
▶ Mybatis로 Select
회원 리스트(ALL SELECT) 를 가져오고 싶은 경우, 컨트롤러에서 해당 요청(URL)을 받으면 select 쿼리문을 실행하는 메소드를 호출하고, 결과값을 얼리어스(AS)로 Member객체에 담는 방식 또는 resultMap에 셋팅하여 Member 타입으로 반환 할수 있다.
m/memberSelect
URL에 /getMemberList 경로로 들어올 경우 맵핑에서 이를 캐치하여 아래 메소드를 실행한다.
Model 객체(화면 단)에 member라는 키워드로 값을 담고 m/memberSelect 경로로 값과함께 이동시킨다.
--> 이때 memberService 클래스의 getMemberList의 리턴결과값이 Attribute 키워드 member에 담기는 것.
memberMapper 인터페이스의 getMemberList 추상메소드의 결과값을 리턴한다 -> 구현은 xml 단에서 하였다.
여러행의 결과가 있을 수 있으니 List의 형태로 받는다. 또는 ArrayList ??
SELECT 쿼리를 실행하여 나온 결과에 얼리어스로 Member 객체의 멤버 이름으로 받는다.
이렇게 되면 getMemberList 추상메소드 결과 값 Member타입 변수에 저장되어 getting 할수 있다.
위의 resultMap 방법을 사용하여 값을 셋팅할수도 있다.
resultMap을 살펴보면 Member 타입으로 반환되며, SELECT 쿼리 태그에 resultMap 아이디 동일하게 설정해준다.
resultMap 태그 안의 result 태그를 보면, property(값)은 Member 객체의 멤버로, column은 테이블 멤버(속성) 으로두면, 테이블의 속성이 Member 객체의 해당 값으로 셋팅해준다.
그렇게 값이 설정되어 Model 화면단 객체에 member 키워드로 List<Member> 객체가 셋팅되어 화면으로 포워드 되었을 때, each 반복문을 통하여 member 객체의 행이 존재하는 만큼 반복문을 돌려 화면단에 출력해준다.
▶ Mybatis로 Update
Update> 선택한 행의 키(아이디)를 검색하여 모든 값들을 조회하고, 변경한 값을 업데이트하여 수정할수 있다.
선택한 행의 객체를 화면에 뿌려준 후, 수정을 원하는 부분만 고치고 submit 하면 아래의 update 쿼리가 실행되는 메소드를 호출하여 요청을 처리해 준다.
동적 SQL trim 태그를 사용하여 update 구문을 만들 수 있다.
- 쿼리문만 사용하여 업데이트 구문 작성
- trim 구문을 사용하여 업데이트 구문을 작성
(아울러 if문을 사용하여 null과 공백을 방지한다.)
'Frameworks > spring boot' 카테고리의 다른 글
log4j 사용하기 (0) | 2020.07.15 |
---|---|
spring boot - 파일 업로드 (0) | 2020.07.15 |
Mybatis(마이바티스) (0) | 2020.05.25 |
thymeleaf 의 링크 (0) | 2020.05.19 |
thymeleaf 반복문, 조건문 (0) | 2020.05.19 |