| 회원 목록 조회
- 관리자 페이지 중 회원 목록 조회를 JPA와 MyBatis 두가지를 통해 구현해보았다.
- MyBatis는 전자정부시스템에서 많이 사용되는 Persistence Framework 중 하나로,
Mapper와 xml을 사용하는 것이 특징이다.
| JPA
1. dependency 추가
2. application.yml 설정
---- 위 두 가지는 생략
3. repository 인터페이스 생성
public interface MemberRepository extends JpaRepository<Member, String> {
}
4. Service 객체에서 필수 생성자를 통해 주입 후 findById(), findAll() 등의 직관적인 메소드를 사용해 결과물 반환
@Service
@RequiredArgsConstructor
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
@Override
public List<Member> list() {
return memberRepository.findAll();
}
}
| MyBatis
- 수업에서 소개해준 MyBatis 튜토리얼 사이트 https://mybatis.org/mybatis-3/ko/getting-started.html
MyBatis – 마이바티스 3 | 시작하기
mybatis.org
1. dependency 추가
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
2. application.yml에 설정 추가
** mybatis는 시작점을 아래와 같이 들여쓰기를 하지 않아야지만 정상 작동된다.
spring:
mybatis:
mapper-locations: mybatis/**/*.xml <-- mybatis하위 모든 디렉토리의 xml파일
configuration:
map-underscore-to-camel-case: true <-- db의 snake 표기법 <-> spring camel 표기법
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl <--- log
3. 인터페이스를 통해 Mapper & xml 파일 생성
인터페이스 | xml | |
파일명 | MemberMapper.java | MemberMapper.xml |
위치 | java>com.example.fastlms.admin.mapper | resource>mybatis |
[3-1] @Mapper를 통해 Mapper 인터페이스를 생성
package com.example.fastlms.admin.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MemberMapper {
}
[3-2] application.yml에 설정한 mapper-locations에 Mapper와 동일한 이름의 xml 생성
[3-3] [3-2] xml 파일의 namespace에 Mapper의 "패키지경로.인터페이스명"을 추가 & 쿼리 작성
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace : MemberMapper의 패키지 경로.클래스명-->
<mapper namespace="com.example.fastlms.admin.mapper.MemberMapper">
<!--쿼리가 이루어지는 공간-->
<select id="selectList" resultType="com.example.fastlms.admin.dto.MemberDto">
select * from member
</select>
</mapper>
[3-4] MemberDto 작성
package com.example.fastlms.admin.dto;
import java.time.LocalDateTime;
public class MemberDto {
String userId;
String password;
String userName;
String phoneNumber;
boolean emailAuthYn;
String emailAuthKey;
LocalDateTime emailAuthAt;
String resetPasswordKey;
LocalDateTime resetPasswordLimitDate;
boolean adminYn;
LocalDateTime registeredAt;
LocalDateTime updatedAt;
}
** 여기에서 새로운 플러그인을 배웠는데, String Manipulation으로 이걸 쓰면 snake를 camel 표기법으로 자동 변환한다.

[4] Mapper에 xml에 만든 쿼리 id를 함수로 사용한다.
package com.example.fastlms.admin.mapper;
import com.example.fastlms.admin.dto.MemberDto;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface MemberMapper {
List<MemberDto> selectList(MemberDto parameter);
}
4. 서비스 클래스에서 Mapper를 주입한 후, 반환 Object 객체를 생성하여 Mapper메소드 배개변수에 전달한다.
@Service
@RequiredArgsConstructor
public class MemberServiceImpl implements MemberService {
private final MemberMapper memberMapper;
@Override
public List<MemberDto> list() {
MemberDto parameter = new MemberDto();
List<MemberDto> list = memberMapper.selectList(parameter);
return list;
}
}
[ 참조 및 출처 ]
부트캠프 수업 내용을 정리하였습니다.
'Framework > 프로젝트로 스프링 이해하기' 카테고리의 다른 글
[LMS만들기] 페이징 처리하기 (with MyBatis) (0) | 2022.10.05 |
---|---|
[LMS만들기] 회원 검색 기능 구현 (0) | 2022.10.04 |
[LMS 만들기] 관리자 로그인 구현 (2) | 2022.10.04 |
[LMS 만들기] 비밀번호 초기화 요청 및 메일 링크를 통한 초기화 (1) | 2022.10.04 |
[LMS 만들기] 스프링 시큐러티를 이용한 로그인/로그아웃 (0) | 2022.10.03 |