| 수정하기(Update)

Focus out시 ajax를 실행하여 제목을 update 하는 방식으로 진행
JS
//title save
let past_title;
function titleFoIn(event){
past_title = event.target.innerText;
console.log()
}
function titleFoOut(event){
let title_input = document.getElementById('title_input');
let openedSheetId = document.getElementById('openedSheetId');
console.log(past_title)
console.log(event.target.innerText)
if (past_title != event.target.innerText) {
$.ajax({
type : 'PUT', // 타입 (get, post, put 등등)
url : '/main', // 요청할 서버url
dataType : "json",
contentType:"application/json",
async:false,
data : JSON.stringify({
id:openedSheetId.value,
memberId:memberId.value,
plannerTitle: event.target.innerText
}),
success : function(result) { // 결과 성공 콜백함수
console.log('성공')
const selectedPlanner = document.querySelector('#sheet'+openedSheetId.value+'>.planner_title');
selectedPlanner.innerText = result.data.plannerTitle;
}
})
}
}
MainApiController
@RestController
@RequestMapping("main")
@RequiredArgsConstructor
public class MainApiController {
private final SheetApiLogicService sheetApiLogicService;
@PutMapping("")
public Header<SheetApiResponse> update(@RequestBody SheetApiRequest request){
return sheetApiLogicService.update(request);
}
}
SheetApiLogicService
1. repository 를 통해 객체를 find한다
2. 그 객체의 set메소드를 이용해 값을 변경해준다
3. repository의 save메소드의 매개변수로 그 객체를 전달해주면 update가 된다.
@Service
@RequiredArgsConstructor
public class SheetApiLogicService {
private final SheetRepository sheetRepository;
private final MoneyMemberRepository moneyMemberRepository;
public Header<SheetApiResponse> response(Sheet sheet){
SheetApiResponse sheetApiResponse = SheetApiResponse.builder()
.plannerTitle(sheet.getPlannerTitle())
.id(sheet.getId())
.build();
return Header.OK(sheetApiResponse);
}
public MoneyMember member(Long memberid){
MoneyMember moneyMember = MoneyMember.builder()
.id(memberid)
.build();
return moneyMember;
}
public Header<SheetApiResponse> update(SheetApiRequest request) {
Optional<MoneyMember> member = moneyMemberRepository.findById(request.getMemberId());
Optional<Sheet> sheet = sheetRepository.findById(request.getId());
Sheet newSheet = null;
if(sheet.get().getMember()==member.get()){
newSheet = sheetRepository.findById(request.getId()).get();
newSheet.setPlannerTitle(request.getPlannerTitle());
}
return response(sheetRepository.save(newSheet));
}
}
SheetApiRequesst
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class SheetApiRequest {
private Long id;
private Long memberId;
private String plannerTitle;
}
SheetApiResponse
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class SheetApiResponse {
private Long id;
private Long memberId;
private String plannerTitle;
}

builder로 update시도했으나 안됨
update는 그냥 setter써야할듯
반응형
'웹 개발 > 🍃 SpringBoot' 카테고리의 다른 글
| SpringBoot | 연관관계가 있는 엔티티에서의 CRUD하는법 (0) | 2023.05.21 |
|---|---|
| SpringBoot | CRUD 구현 - 글삭제(Delete) (0) | 2023.05.21 |
| SpringBoot | CRUD 구현 - 회원가입(Create),Fetch (0) | 2023.05.20 |
| SpringBoot | CRUD 구현 - 아이디중복검사(Read),Ajax (0) | 2023.05.19 |
| SpringBoot | HTML, CSS, JS 변경 시 실시간 반영 방법 (0) | 2023.05.19 |