simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • 404
  • 참조변수
  • controllerTest
  • JVM메모리구조
  • scanner #next() #nextLine()
  • 자바프로그램
  • 자바메모리구조
  • 참조타입
  • 스프링
  • 자바프로그래밍
  • null
  • 컨트롤러

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[LMS 만들기] JPA와 MyBatis로 회원 목록 구현
Framework/프로젝트로 스프링 이해하기

[LMS 만들기] JPA와 MyBatis로 회원 목록 구현

2022. 10. 4. 15:04

|  회원 목록 조회

- 관리자 페이지 중 회원 목록 조회를 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
    'Framework/프로젝트로 스프링 이해하기' 카테고리의 다른 글
    • [LMS만들기] 페이징 처리하기 (with MyBatis)
    • [LMS만들기] 회원 검색 기능 구현
    • [LMS 만들기] 관리자 로그인 구현
    • [LMS 만들기] 비밀번호 초기화 요청 및 메일 링크를 통한 초기화
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바