반응형
엑셀과 직접 등록으로 등록한 주민 데이터를 조회하기 위한 로직을 구현한다.
<table class="table table-striped">
<thead>
<tr>
<th scope="col">이름</th>
<th scope="col">연락처</th>
<th scope="col">차량번호</th>
<th scope="col">주소</th>
<th scope="col">구분</th>
</tr>
</thead>
<tbody>
<tr th:each="m: ${carDTOList}">
<td th:text="${m.name}"></td>
<td th:text="${m.phoneNumber}"></td>
<td th:text="${m.carNumber}"></td>
<td th:text="${m.address}"></td>
<td th:text="${m.sort}"></td>
</tr>
</tbody>
</table>
carDTOList에 담겨진 주민 정보를 뿌려준다.
페이징 처리는 아직 안 해주었다. 넘버링도 넣긴 해야 하는데 고민 중이다.
public interface ICarListMapper {
// 전체 차량 조회 로직
List<CarDTO> getFullCarList() throws Exception;
}
인터페이스에서 먼저 getFullCarList()를 정의한다.
MongoDB에 저장되어 있는 차량 정보를 list에 담아 Controller까지 전달해 줄 거기 때문에 리턴 타입은 List로 설정해 주었다.
package project.SPM.mapper.impl;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
import project.SPM.dto.CarDTO;
import project.SPM.mapper.ICarListMapper;
import java.util.LinkedList;
import java.util.List;
@Slf4j
@Component("CarListMapper")
@RequiredArgsConstructor
public class CarListMapper implements ICarListMapper {
private final MongoTemplate mongo;
// 전체 차량 조회
@Override
public List<CarDTO> getFullCarList() throws Exception {
// 조회 결과를 전달하기 위한 객체
List<CarDTO> carDTOList = new LinkedList<>();
MongoCollection<Document> col = mongo.getCollection("Car");
Document projection = new Document();
// ObjectId를 가지고 오지 않을 때 사용
projection.append("_id", 0);
FindIterable<Document> documents = col.find().projection(projection);
for (Document doc : documents) {
if (doc == null) {
doc = new Document();
}
CarDTO carDTO = new CarDTO();
carDTO.setName(doc.getString("name"));
carDTO.setPhoneNumber(doc.getString("phoneNumber"));
carDTO.setCarNumber(doc.getString("carNumber"));
carDTO.setAddress(doc.getString("address"));
carDTO.setSort(doc.getString("sort"));
carDTOList.add(carDTO);
}
return carDTOList;
}
}
인터페이스에서 정의한 메소드를 오버라이딩해 재정의한다. mongoDB를 사용하기 위해 MongoTemplate 을 의존성 주입을 받는다.
조회 결과를 전달하기 위한 객체를 만들고 mongoDB에 데이터를 저장할 때 자동으로 생성되는 _id를 가져오지 않기 위해 로직 하나를 추가해 주었다. 그 뒤는 for문으로 document에 들어있는 값을 carDTO로 옮겨주고 carDTO를 carDTOList에 저장한 뒤 리턴시켰다.
public interface ICarListService {
// 전체 차량 조회 로직
List<CarDTO> getFullCarList() throws Exception;
}
마찬가지로 getFullCarList()를 Service 인터페이스에서도 정의해주었다. 리턴 타입도 같다.
package project.SPM.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import project.SPM.dto.CarDTO;
import project.SPM.mapper.ICarListMapper;
import project.SPM.service.ICarListService;
import java.util.LinkedList;
import java.util.List;
@Slf4j
@Component("CarListService")
@RequiredArgsConstructor
public class CarListService implements ICarListService {
private final ICarListMapper iCarListMapper;
@Override
public List<CarDTO> getFullCarList() throws Exception {
// 결과 값
List<CarDTO> carDTOList = null;
carDTOList = iCarListMapper.getFullCarList();
if (carDTOList == null) {
carDTOList = new LinkedList<>();
}
return carDTOList;
}
}
Service에서는 null 체크 정도만 해주었고 리턴한다.
//차량 전체 리스트 페이지 및 로직
@GetMapping("/carList/fullCarList")
public String fullCarList(Model model) throws Exception {
List<CarDTO> carDTOList = iCarListService.getFullCarList();
model.addAttribute(carDTOList);
return "carList/fullCarList";
}
Controller에서 model 객체에 담아 View로 넘겨주었고 맨 위에 있는 html에서 값을 받아 화면에 띄워주었다.
반응형
'Project > 소경관' 카테고리의 다른 글
[소경관] : 직접 체크 로직 구현 정리하기 (0) | 2022.05.23 |
---|---|
[소경관] : 주민(방문자, 블랙리스트) 차량 조회 로직 (0) | 2022.05.14 |
[소경관] : 직접 차량 등록하기 기능 추가 (0) | 2022.05.09 |
[소경관] : Spring Boot Apache poi 사용해서 excel 읽고, MongoDB에 저장하기 (0) | 2022.05.07 |
[소경관] : Apache poi 라이브러리를 사용하여 View에서 Excel 파일 읽어 저장하기 (0) | 2022.04.30 |
댓글