일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스프링부트핵심가이드
- network configuration
- 처음 만나는 AI 수학 with Python
- 친절한SQL튜닝
- 선형대수
- 서버설정
- 티스토리 쿠키 삭제
- 자료구조와함께배우는알고리즘입문
- 자료구조와 함께 배우는 알고리즘 입문
- 페이징
- 자바편
- 데비안
- 목록처리
- 코드로배우는스프링웹프로젝트
- resttemplate
- Kernighan의 C언어 프로그래밍
- baeldung
- ㅒ
- 스프링 시큐리티
- 리눅스
- 이터레이터
- 구멍가게코딩단
- 알파회계
- GIT
- d
- 네트워크 설정
- /etc/network/interfaces
- 처음 만나는 AI수학 with Python
- 코드로배우는스프링부트웹프로젝트
- iterator
- Today
- Total
목록전체 글 (406)
bright jazz music
pageable의 Sort 객체는 JPQLQuery의 orderBy()의 파라미터로 전달되어야 하지만 JPQL에서는 Sort 객체를 지원하지 않는다 따라서 orderBy()의 경우 OrderSpecifier을 파라미터로 처리해야 한다 OrderSpecifier(Order order, Expression target) OrderSpecifier의 Order는 com.querydsl.coreTypes.Order 타입이다. Expression은 com.querydsl.core.Expression이다. 1. SearchBoardRepository 수정: sort / count 처리를 위해 추가되는 코드 //SearchBoardRepositoryImpl.java ///... //Order by : sort Sor..
파라미터로 전달되는 type 값은 '제목(t), 내용(c), 작성자(w)'를 하나 혹은 조합으로 만든 'tcw'와 같은 형태이다. 이 조건에 대해 BooleanExpression 처리한다. 이 조건은 이전 예제에서도 다룬 적이 있다. 1. BooleanExpression 사용하여 searchPage()에 코드 추가 변경한 부분은 파라미터에 따라 검색 조건을 추가할 수 있또록 BooleanBuilder와 BooleanExpression이 추가된 것이다. tuple.groupBy()의 경우 메서드의 하단에서 처리한다. //SearchBoardRepositoryImpl.java @Log4j2 public class SearchBoardRepositoryImpl extends QuerydslRepositoryS..
이전 포스팅에서 튜플 객체를 사용하여 여러 객체를 가져오는 것을 확인하였다. 이번 포스팅에서는 원하는 파라미터(Pageable)을 전송하고, Page를 만들어서 반환하는 것이다. 1. searchBoardRepository에 searchPage()를 설계 searchPage() 추가 PageRequestDTO 자체를 파라미터로 처리하지 않는 이유는 DTO를 가능하면 Repository 영역에서 다루지 않기 위해서이다. //SearchBoardRepository.java package com.example.bootboard.repository.search; import com.example.bootboard.entity.Board; import org.springframework.data.domain.Pa..
1. groupBy()를 사용한 집합 함수 처리 //searchBoardRepositoryImpl.java @Log4j2 public class SearchBoardRepositoryImpl extends QuerydslRepositorySupport implements SearchBoardRepository { //생성자 public SearchBoardRepositoryImpl(){ super(Board.class); //여기서 super는 querydslRepositorySupport이다. } @Override public Board search1() { log.info("search1............"); //JPQL 사용 //이제 로그가 찍힐 뿐만 아니라 아래의 JPQL도 실행된다. QBo..
1. SearchBoardRepositoryImpl에 JPQL 작성하기 :JPQLQuery객체 로그 찍히는 것을 확인했으니, 실제 JPQL을 ㅈ가성해 보자 이 과정에서 Querydsl 라이브러리 내에 JPQLQuery라는 인터페이스를 활용한다. //SearchBoardRepositoryImpl.java package com.example.bootboard.repository.search; import com.example.bootboard.entity.Board; import com.example.bootboard.entity.QBoard; import com.querydsl.jpa.JPQLQuery; import lombok.extern.log4j.Log4j2; import org.springframe..
FK를 이용해서 @ManyToOne과 같은 연관관계를 작성한 경우 가장 어려운 작업은 JPQL을 구성하는 것이다. 하나의 엔티티 타입만으로 사용하는 경우 JPQL을 사용하여 동적 쿼리를 만드는 게 간편했다. 그러나 여러 엔티티 타입을 JPQL로 직접 처리하는 과정 자체가 기존과 달라지고 더욱 복잡해 진다 흔히 Tuple이라고 부르는 Object[ ] 타입으로 나오기 때문이다. 그러나 이 방식은 어떤 상황에서도 사용할 수 있는 가장 강력한 JPQL을 구성하는 방식이기도 하다. 1. 프로젝트의 변경 (build.gradle에 Querydsl 설정 추가) bootBoard 프로젝트의 경우 지금까지는 Querydsl 설정이 없는 상태에서 작성되었다. 따라서 build.gradle에 Querydsl 설정을 추가해..
게시물 수정은 /board/modify 경로를 통해 접근하는 페이지에서 이루어진다. 게시물 조회 페이지에서 수정을 누르고 수정 후 저장 또는 삭제를 수행한다. 1. BoardController 코드 수정 //BoardController.java package com.example.bootboard.controller; import com.example.bootboard.dto.BoardDTO; import com.example.bootboard.dto.PageRequestDTO; import com.example.bootboard.service.BoardService; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.e..
1. BoardController에 조회를 위한 코드 추가 //BoardController.java package com.example.bootboard.controller; @Controller @RequestMapping("/board/") @Log4j2 @RequiredArgsConstructor public class BoardController { private final BoardService boardService; ... //조회 @GetMapping("/read") public void read(@ModelAttribute("requestDTO") PageRequestDTO pageRequestDTO, Long bno, Model model) { log.info("bno: " + bno)..
게시물 등록 처리 1. BoardController에 등록을 위한 코드 추가 //BoardController.java @Controller @RequestMapping("/board/") @Log4j2 @RequiredArgsConstructor public class BoardController { private final BoardService boardService; ... //등록(get) : 등록을 위한 페이지 반환 @GetMapping("/register") public void register(){ log.info("register get..."); } //등록(post) : 등록을 위한 페이지에 입력된 값을 BoardDTO로 받아서 처리 @PostMapping("/register") pub..
컨트롤러와 화면처리 서비스 계층 까지의 구현이 끝났다. 이제부터는 컨트롤러와 화면을 처리한다. 원래는 컨트롤러부터 작성하려고 했지만 그 전에, 화면에 필요한 정적 리소스들과 페이지들을 추가해야 한다. 이전 장에서 사용한 소스들을 그대로 붙여 넣는다. 1. 정적 리소스 추가하기 아래를 보면 static 폴더와 templates 폴더가 비어있다. static 폴더의 경우, guestbook 프로젝트의 static 폴더 내의 파일들을 그대로 붙여 넣어 준다. templates는 guestbook 프로젝트의 templates 내부의 layout 폴더만 붙여 넣어준다. templates에는 추가로 board 폴더를 생성해준다. 이전 프로젝트의 정적 소스들 https://github.com/hojuncha997/g..