728x90
반응형
샘플 Entity는 Staff로 정하고 설명을 위해 제공
<!--샘플 엔티티-->
@Getter
@Entity
@NoArgsConstructor
public class Staff {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
}
Controller
@Controller
public class StaffController {
private final StaffService staffService;
public StaffController(StaffService staffService) {
this.staffService = staffService;
}
@GetMapping(value = "/search")
String search(Model model, @RequestParam("searchValue") String searchValue, Model model {
<!-- 아무것도 입력하지 않을 시 전체 리스트를 뿌려주는 함수로 재매핑 -->
if (Objects.equals(searchValue, "")) {
return "redirect:/조회하는 함수 url 매핑";
}
<!-- 입력한 값이 있다면, 그 값을 통해서 검색 로직을 실행시킨 후 view단의 th:each="staff : ${staffList}" 에 넣는 작업 -->
else {
model.addAttribute("staffList", staffService.findBySearchValue(searchValue));
return "staffList";
}
}
}
VIEW 단의 예시 테이블
<tbody class="table-content">
<tr th:id="${staff.name}" th:each="staff : ${staffList}" class="table-row">
<td class="table-data" th:text="${staff.id}"></td>
<td class="table-data" th:text="${staff.name}"></td>
<td class="table-data" th:text="${staff.age}"></td>
...
Service
@RequiredArgsConstructor
@Service
public class StaffService {
private final StaffRepository staffRepository;
public List<Staff> findBySearchValue(String searchValue) {
return staffRepository.findBySearchValue(searchValue);
}
}
Repository
@Repository
public interface CodeSheetRepository extends JpaRepository<Staff, Long> {
@Transactional
@Query(value = "SELECT * FROM STAFF s WHERE s.NAME LIKE %:searchValue% OR s.AGE LIKE %:searchValue% ", nativeQuery = true)
List<Staff> findBySearchValue(@Param("searchValue") String searchValue);
}
728x90
반응형
'개발자 전향 프로젝트' 카테고리의 다른 글
[Front] 스크롤은 가능하되 스크롤 안 보이게 하기 (쉬움) (0) | 2022.09.29 |
---|---|
[Spring Boot] 페이징이 어렵다고? 이렇게만 하세요 (0) | 2022.09.24 |
[Spring Boot] 세상 쉬운 검색창(검색 로직) 만들기 1-1 (View) (0) | 2022.09.24 |
[Spring] 모달 쉽게 띄우기 + 모달에 매개변수 값 전달하기 (타임리프) (2) | 2022.09.21 |
[Spring] 객체지향 설계 5 원칙 SOLID란? feat.클린코드 (0) | 2022.09.21 |