아까 하던거 이어서!
불러온 값들 DB에 저장시키기
controller → service → serviceImpl → DAO → Mapper 렛츠고
inputApiController
@PostMapping("/Matzip/inputMatzipDB")
public String inputMatzipDB(@RequestParam("selectedContentIds") String selectedContentIds,
HttpSession session, RedirectAttributes redirectAttributes) {
List<MatzipVO> restaurantList = (List<MatzipVO>) session.getAttribute("restaurantList");
if (selectedContentIds == null || selectedContentIds.isEmpty()) {
redirectAttributes.addFlashAttribute("message", "음식점 ID를 선택해 주세요.");
return "redirect:/Matzip/MatzipApi";
}
if (restaurantList == null) {
redirectAttributes.addFlashAttribute("message", "세션에서 데이터를 가져올 수 없습니다.");
return "redirect:/Matzip/MatzipApi";
}
List<MatzipVO> selectedRestaurants = restaurantList.stream()
.filter(restaurant -> selectedContentIds.contains(restaurant.getId()))
.collect(Collectors.toList());
String resultMessage = matzipService.insertMatzipData(selectedRestaurants);
redirectAttributes.addFlashAttribute("message", resultMessage);
return "redirect:/Matzip/inputMatzipDB";
}
restaurantList 이름으로 저장된 데이터(음식점 리스트들!) 가져와서 List<MatzipVO>로 넘긴다.
if문으로 각각 에러 처리
List<MatzipVO> selectedRestaurants = restaurantList.stream()으로 사용자가 선택한 ID만 포함해서 필터링 하고
새로운 selectedRestaurants 리스트에 담았다.
그러고 selectedRestaurants를 service에 전달하기
MatzipService
인터페이스니까 MatzipServiceImpl에 던져주기
String insertMatzipData(List<MatzipVO> selectedRestaurants);
MatzipServiceImpl
@Service
public class MatzipServiceImpl implements MatzipService {
@Autowired
private MatzipDAO matzipDAO;
@Override
public String insertMatzipData(List<MatzipVO> selectedRestaurants) {
try {
for (MatzipVO restaurant : selectedRestaurants) {
matzipDAO.insertMatzip(restaurant);
}
return "음식점 정보가 성공적으로 저장되었습니다.";
} catch (Exception e) {
e.printStackTrace();
return "음식점 정보 저장 중 오류가 발생했습니다: " + e.getMessage();
}
}
selectedRestaurants 리스트에 포함된 MatzipVO를 하나씩 처리하게 했다.
어떻게? DAO의 insertMatzip 불러와서 restaurant 객체 저장하게!
다오 너 나와!
MatzipDAO
@Repository
public class MatzipDAO {
@Autowired
private SqlSession sqlSession;
private static final String MAPPER = "com.human.web.mapper.MatzipMapper";
public void insertMatzip(MatzipVO restaurant) {
sqlSession.insert(MAPPER + ".insertMatzip", restaurant);
}
sqlSession.insert 커몬, MatzipMapper에 insertMatzip sql문 기다려! restaurant 줄게!
MatzipMapper
<mapper namespace="com.human.web.mapper.MatzipMapper">
<insert id="insertMatzip" parameterType="com.human.web.vo.MatzipVO">
INSERT INTO s_matzip (title, addr1, overview, mapx, mapy, tel)
VALUES (#{title}, #{addr1}, #{overview}, #{mapx}, #{mapy}, #{tel})
</insert>
쿼리문 등장
insertMatzip한테 왔습니다. s_matzip 테이블에 받아온 값들 챡챡 넣기
여기서 contentid는 auto_increment로 처리해서 따로 넣진 않았습니다.
(contentid로 디테일 페이지 구성하고 댓글 기능 추가)
결과는?
firstimage는 서울관광재단_음식이미지정보로 찾아서 insert into로 처리~
뽈뽈뽈 서울 맛집 DB 저장 이용법
1. 서울관광재단_음식이미지정보.csv에서 가져올 음식점의 이름과 식당ID를 가져온다.
2. 값을 넣어준다. 11135 송림식당
3. 나온 결과를 확인 후 체크하고 저장한다.
4. DB에 저장완료가 뜨면 완료! 이제 firstimage에 csv에서 얻은 이미지URL을 넣어준다.
DB에 저장된 값 불러오는 백엔드랑 페이지도 다 완성했는데 시간 날 때 정리할 예정..!
끝!
빨리 끝나고 놀러가고 싶다.. 지쳐 지쳐
'Develop > JSP' 카테고리의 다른 글
중간보고 피드백 (12) (4) | 2024.11.22 |
---|---|
공공데이터 API - 서울 맛집 API로 DB저장 구현하기 (1) (2) | 2024.10.27 |
OpenWeatherMap API, canvas 사용하기 (4) | 2024.10.24 |
구글 지도 API 써서 일정 페이지 만들기 (4) | 2024.10.22 |
메인 페이지 정리, 페이지 하나로 DB 총 관리하기 (1) (3) | 2024.10.14 |