오늘은 과제를 마무리 했다
좋아요 기능을 다른분꺼는 같이 완성했는데 정작 나는 시간이 없어서 못한체로 제출을 했고 queryDSL을 사용해 만들어둔 TODOLIST를 날짜 내림차순으로 정렬해보았는데
기본설정
gradle에 추가 !
plugins {
kotlin("kapt") version "1.8.22" // 추가!
}
val queryDslVersion = "5.0.0"
dependencies {
implementation("com.querydsl:querydsl-jpa:$queryDslVersion:jakarta") // 추가!
kapt("com.querydsl:querydsl-apt:$queryDslVersion:jakarta") // 추가!
}
QueryDslSupport 파일
abstract class QueryDslSupport {
@PersistenceContext
protected lateinit var entityManager: EntityManager
protected val queryFactory:JPAQueryFactory
get(){
return JPAQueryFactory(entityManager)
}
}
RepositoryImpl - serviceImpl에서 여러파일을 주입 받는거보다 interface하나만 상속 받게 하기위해 기존의 Repository와 customRepository / RepositoryImpl을 만들어서 관리 해준다
@Repository
class TodoRepositoryImpl:CustomTodoRepository,QueryDslSupport() {
private val todo = QTodoEntity.todoEntity
override fun sortByDate():List<TodoEntity>{
return queryFactory.selectFrom(todo)
.orderBy(todo.creatAt.desc())
.fetch()
}
}
//커스텀 레포지토리에서 상속 받고 커스텀 레포지토리는 기존의 TodoRepository에서 상속 받음
TodoServiceImpl
@Service
class TodoServiceImpl(
private val todoRepository: TodoRepository, // - 기존의 쿼리DSL레포지토리까지 주입 받던걸 하나로 주입 ㄱㄴ
private val userRepository: UserRepository
):TodoService {// todoRepository의 객체를 주입받고 TodoService의 함수를 상속 받음
override fun getTodo(todoId:Long):RetrieveTodoDto? {
val findTodo = todoRepository.findByIdOrNull(todoId)?: throw ModelNotFoundException("todo",todoId)
return findTodo?.let { RetrieveTodoDto.from(it) }
}//principal 빼기
//
override fun getTodoList():List<TodoResponseDto> {
return todoRepository.sortByDate().map{it.toResponse()}
//오름차순 내림차순 둘다 해봄 적용됨 완료 !!
}
}
요구사항이 복잡하지 않기 때문에 일단은 이런식으로 날짜 내림차순정렬을 해보았다 !
'TIL' 카테고리의 다른 글
24_02_16TIL Cach (1) | 2024.02.16 |
---|---|
24_02_15 TIL queryDSL활용 / 검색 /정렬 /페이징 (0) | 2024.02.15 |
24_02_08 TIL (0) | 2024.02.08 |
24_02_06 TIL (1) | 2024.02.06 |
24_01_29 TIL (1) | 2024.01.29 |