스마트기기. 안전하게 사용합시다. 좋은 습관을 만들어요. 😀🙂
저번 시간에, html파일을 그대로 연결해서, 텍스트가 database에 들어간 상태는 아니라는 사실~. setAttribute를 통해서, 텍스트들을 html파일에 넣어줘야하겠죠~.
또, 이동되는 화면. html파일이 이동하면서, '서서 일하기', '음식 만들기', '김치'.
html파일들이 이동형태는...
index.html
search0.html
search1stand.html
search2stand_food.html
search2stand_food_kimchi.html
이렇게 됨니다. 지금은 텍스트 처리로 html을 그대로 놓아둔다고 해도, 마지막부분. 서서 일하기, 음식 만들기, 김치. 해당 버튼을 눌렸을 때에는 검색결과값이 표시되야하겠죠.
search2stand_food.html파일.
<div class="col d-flex justify-content-center">
<h5> <a role="doc-backlink" href="javascript:window.history.back();" style="color:black;"><i class="bi bi-chevron-left"></i></a> ✋할 일을 찾아볼까요.</h5>
</div>
</div>
<div class="row pb-2">
<div class="col d-flex justify-content-center">
<a href="#" class="btn btn-success color-co ps-2">서서 일하기</a>
<a href="#" class="btn btn-success color-co">음식 만들기</a>
</div>
</div>
<div class="row justify-content-center">
<div class="col d-flex justify-content-center">
<div class="card" style="width: 18rem;">
<div class="card-body d-flex justify-content-center">
<a href="#" class="btn btn-success disabled">요리하기</a>
<p class="card-text"></p>
</div>
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col d-flex justify-content-center">
<div class="card" style="width: 18rem;">
<div class="card-body d-flex justify-content-center">
<a href="/search2stand_food_kimchi" class="btn btn-success">김치</a>
<p class="card-text"></p>
</div>
</div>
</div>
</div>
위에 보시면, a태그. 김치라는 버튼을 눌렸을 때에, 이동 링크. /search2stand_food_kimchi. 이 부분의 컨트롤러에 어떤 부분을 만들어야겠죠. UrlController클래스를 봅시다.
UrlController.java 파일.
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class UrlController {
//...
@GetMapping("/search2stand_food_kimchi")
public String search2stand_food_kimchi() {
//추가되어야할 부분. 데이터.
return "search2stand_food_kimchi";
}
}
ServiceWork라는 엔티티에, 서서일하기, 음식 만들기, 김치. 부분을 가져오는 형태를 만들어 줌니다. QueryDSL의 검색기능을 사용해봅시다.
localhost:8080/admin으로 연결해봅시다.

하나하나씩. 현재는 id로만 검색이 될검니다. searchTag1, searchTag2, searchTag3이 and연산자로 연결되어있는 형태로 만들어야 겠죠.
Spring Boot, JPA에서, QueryDSL의 흐름. 전체라고도 할 수 있겠죠. 여기에서, 일반적으로는 Controller클래스. 컨트롤러 클래스에서, 서비스로, 예를 들면 findById로 해당 id 로우 데이터를 가져오게 되구요. 한줄이겠죠. QueryDSL에서는 컨트롤러에서 서비스로. 서비스에서 리파지토리. 여기까지는 일반적인 Spring Boot JPA와 같아요. 그다음에, 리파지토리 커스텀, 리파지토리 커스텀에서, 리파지토리Impl로 이동하게 됨니다.
그래서 리파지토리Impl파일을 수정해주면, 데이터를 어느정도 가공해서 가져올 수 있게 됨니다. 그런데 또 해야할 것은 별점순 정렬. 조회수 정렬, 좋아요 순 정렬. 다시 ServiceWork파일을 바꾼다면...
//ServiceWork
private Long id;
private String coopName;
private String coopComment;
private String coopWorkName;
private String wtag1;
private String wtag2;
private LocalDateTime startWorkDate;
private LocalDateTime endWorkDate;
private String searchTag1;
private String searchTag2;
private String searchTag3;
private String searchTag4;
private String searchTag5;
private Long viewCount; //조회수
private Long likeCount; //좋아요수
private Long starCount; //별점수 = starAll/starPairMan
private Long starAll; // 별점 총합
private Long starPairMan; // 별점 참가자
private String isDel;
private LocalDateTime modifiedDate;
private LocalDateTime createdDate;
실제로, SpringAutoCodeJPAEntity3을 사용할 때, 주석은 제거해서... 사용하면 되겠죠~.
com.example, 인텔리제이에서, 마우스 오른쪽 버튼으로 파일들. 맨위, 프로젝트를 선택하고, Open in > Explorer를 선택하면 윈도우즈 탐색기가 열려요. 거기에서 주소줄을 마우스로 클릭하면, 프로젝트 위치가 나옴니다. Explorer를 선택하고, 프로젝트를 한번 더 클릭해야 되는 것도 같구요.

InstanceUrlController 클래스의 /부분. /admin 이동. 이부분으로 다시 바꿔줌니다.
package com.example.firstinstance.controller.firstinstanceurl;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class InstanceUrlController {
@GetMapping("/administer/instanceurl")
public String index(){
//firstInstance index의 처음 위치.
return "firstinstance/index";
}
@GetMapping("/admin")
public String index2(){
//firstInstance index의 처음 위치.
return "firstinstance/index";
}
// 개발중, 테스트용 url연결 만듬.
/*
@GetMapping("/")
public String index3(){
return "redirect:/administer/instanceurl";
}
*/
}
searchTag1, searchTag2, searchTag3. 해당 값을 and연산으로 생각하구요. 실제 값을 넘겨받아야하는 부분이, UrlController클래스, /search2stand_food_kimchi 이 부분이였죠.
서서 일하기, 음식 만들기, 김치. tag는 5개까지 가능하게 만들었습니다. 컨디션에 담아줍시다. 실제 기본적으로 만들어지는 컨디션 클래스가 있습니다. QueryDSL검색에 필요한 여러 인자값을 저장해두죠. 그리고, or연산으로, and연산으로 전체적인 연산이 가능하게 만들어주죠. 이 작업을 하는 곳이, 리파지토리Impl클래스이구요.
일단 미리 만들어 둔, 컨디션 클래스는...
package com.example.domain.servicework;
import lombok.Data;
@Data
public class ServiceWorkSearchCondition {
private String field;
private String s;
private String sdate;
private String edate;
}
위와 같은 형태로 되어있습니다. /admin으로 연결해서 데이터 값을 입력할 때에, field값은 id, s는 스트링. 숫자가 되겠죠. 또, sdate와 edate. 시작일, 끝일. 이렇게 검색되게 하는 것이죠.
컨디션 클래스를 또 만들어 줌시다. 컨디션 클래스는 되도록 모든 값을 고려해서 만드는 것이 좋습니다. 또 다시 컨디션 클래스를 만들필요가 없게 되겠죠. 태그1~5번까지. 또, 회사명 검색, 별점 오름차순, 내림차순, 조회수 오름차순, 내림차순, 좋아요 오름차순, 내림차순, 날짜는 언제 시작, 언제 끝까지. sdate, edate. coopComment로 검색. 'A푸드. 김치를 만들어 보세요.' 이 부분도 있겠죠.
전부 다 String으로 바꿔서... 이렇게 만들어 둠니다. ServiceWorkSearchCondition2.java. 클래스 파일.
package com.example.domain.servicework;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ServiceWorkSearchCondition2 {
private String id;
private String coopName;
private String coopComment;
private String coopWorkName;
private String wtag1;
private String wtag2;
private String startWorkDate;
private String endWorkDate;
private String searchTag1;
private String searchTag2;
private String searchTag3;
private String searchTag4;
private String searchTag5;
private String viewCount;
private String likeCount;
private String starCount;
private String starAll;
private String starPairMan;
private String isDel;
private String modifiedDate;
private String createdDate;
}
하다보니... Foreign Entity. ServiceWorkStr의 추가도 필요했군요. 엔티티를 다시 만들면...

ServiceWorkStr엔티티도 만들어줌니다. 들어가는 String. Image파일을 세어보면... 한 50개의 칼럼이 나오는 것 같습니다~.
만들다 보니, 리파지토리Impl부분을 다시 업그레이드해서 만들었네요. SpringAutoCodeJPAEntity3. 또, 이어서 적어볼게요.
https://github.com/infott2t/SpringAutoCodeJPAEntity3
GitHub - infott2t/SpringAutoCodeJPAEntity3: Automation Code CRUD. SpringBoot JPA + QueryDSL
Automation Code CRUD. SpringBoot JPA + QueryDSL . Contribute to infott2t/SpringAutoCodeJPAEntity3 development by creating an account on GitHub.
github.com
또, 지금 만들고 있는 부분...
https://github.com/infott2t/TDD-SB-SmartFactoryEX
GitHub - infott2t/TDD-SB-SmartFactoryEX: Hello.
Hello. Contribute to infott2t/TDD-SB-SmartFactoryEX development by creating an account on GitHub.
github.com
공부해보세요~. 좋은 하루되세요.
또, 교회. 다녀보세요. 기독교. 전화도 해보세요. 사회에서 쉴 곳. 하고 싶은 말이네요.
--
저의 글, 봐 주셔서 감사합니다.
'프로그래밍' 카테고리의 다른 글
[프로그래밍] SpringBoot JPA, 예약파트 만들기. html파일들을 타임리프로 바꾸기. 3. 공부해보세요~. (0) | 2023.02.18 |
---|---|
[프로그래밍] SpringBoot JPA, 엔티티 연관관계 sql값 넣기. HeidiSQL. 예) 예약파트. 3. 공부해보세요~. (0) | 2023.02.17 |
[프로그래밍] SpringBoot JPA, 예약파트 만들기. 2. 공부해보세요~. (0) | 2023.02.15 |
[프로그래밍] SpringBoot JPA, 예약파트 만들기. 1. 공부해보세요~. (0) | 2023.02.13 |
[프로그래밍] Grammarly 사이트 사용해보면서. 애니메이션 UI. 개발해보세요. (0) | 2023.02.09 |