프로젝트 & 포트폴리오/학생관리 + 묵찌빠 프로젝트

회원관리 인터페이스 추가와 update 오류 해결

인정이애옹 2024. 6. 3. 19:15

Updatable<T>
반환값 int로

인터페이스

----------------
리스트 조회
Listable

인터페이스

추가수정삭제 공통 기능을 분리하기
List<T> 리스트니까 리스트 형태로 !
리스트 형태 지네릭 타입
매개변수 있, 없 형태
둘 중에 한가지 lt로
return null 
필요할 때마다 추가해서 쓰기



service쪽에 SubjectServiceList파일에 ListableList<Object, Subject>
getList 생성

SubjectService 파일에 implements 

필요한 구문들 조회하면 된다.

-----------------------------------------------------------

package org.choongang.global;

public interface Updatable<T> {
    int update(T form);
}

----------------------------------------------------


package org.choongang.global;

import java.util.List;

public interface Listable<T, R> {
    default List<R> getList(T search) { return null; } ;
    default List<R> getList() { return null; };
}


----------------------------------------------------

package org.choongang.student.services;

import org.choongang.global.Listable;
import org.choongang.global.Service;
import org.choongang.global.Updatable;
import org.choongang.student.entities.Subject;
import org.choongang.student.mapper.SubjectMapper;

import java.util.List;

public class SubjectService implements Service<Subject>, Updatable<Subject>, Listable<Object, Subject> {

    private SubjectMapper mapper;

    public SubjectService(SubjectMapper mapper) {
        this.mapper = mapper;
    }

    @Override
    public int update(Subject form) {
        return 0;
    }

    @Override
    public List<Subject> getList(Object search) {
        return Listable.super.getList(search);
    }
}

----------------------------------------------------
package org.choongang.student.services;
import lombok.RequiredArgsConstructor;
import org.choongang.global.Listable;
import org.choongang.global.Service;
import org.choongang.student.entities.Subject;
import org.choongang.student.mapper.SubjectMapper;

import java.util.List;

@RequiredArgsConstructor
public class SubjectServiceList implements Service<List<Subject>>, Listable<Object, Subject> {
    private final SubjectMapper mapper;


    @Override
    public List<Subject> process() {
        System.out.println("**SubjectService-process1()");

        return mapper.getSubject();

    }
}




------------------------------------------------------
이런식으로 인터페이스 여러가지 방식으로 설계


Updatable<Subject> service = ....

service.update(...)

Listable<Object, Subject> service = ...

List<Subject> items = service.getList(...)




class CommonServiceLocator implements MemberLocator, StudentLocator {

}



interface MemberLocator {
   default JoinService joinService() {
   
   }
   
   
}






-> 쿼리 update 하면 DBeaver에서는 바뀌어 있는데 콘솔창에는 안 된다
services/SubjectServiceList파일에 마지막 get.return 소스가 안 되어있다.
세팅이 캐쉬모드로 cacheEnable
캐쉬 원인 및 삭제

resources.global/config mybatis-config.xml에 setting안에 cashable 문구 넣기
그래도 안되면 select 조회 마다 다 구문 넣어주기
그래도 안된다.

StudentServiceLocator.java에서 47번째 줄 service.put(menu, service); 를 주석 처리하면 된다!

이 방법이 그냥 땜빵 처리이긴 하지만 기능은 되니까 나중에 강사님이 완벽하게 구현해서 알려주실 때까지 기다리기