728x90
반응형
# 시나리오는 아래와 같다.
- 사용자가 insert 수행 시 제목과 내용을 입력하도록 되어 있다. ID는 자동으로 증가하는 방식이고 PK로 되어 있다.
여기서 사용자가 제목과 내용을 입력 시 1개가 INSERT 되는 것이 아닌 2개가 INSERT 되고 1개는 그냥 INSERT가 수행되고 나머지 1개에는 제목과 내용에 Admin이라는 문구가 추가되어 INSERT 하는 시나리오이다.
- 실행 화면은 아래와 같다.
MP4 버전
코드 설명 (매우 조잡한거 같음.)
@Slf4j
@Controller
@Component
public class HomeworkController {
@Autowired
ArticleRepository articleRepository;
@PostMapping("/articles/create/homework")
public String createArticle(ArticleForm form) {
Article article = form.toEntity();
Article saved = articleRepository.save(article); // insert 수행 1차
// id값 가져온다.
long get_id = saved.getId();
// content값 가져온다.
String get_content = saved.getContent() + " Admin";
// title값 가져온다.
String get_title = saved.getTitle() + " Admin";
// get_id값과 저장된 getId값이 같다면 수행한다. 같을수 밖에 없음.
if (get_id == saved.getId()) {
// insert시 pk 중복을 피하기위해 get_Id값에 +1을 해준다.
long number = saved.getId() + 1;
// number라는 변수에 getId값이+1 되었기 때문에 pk 중복은 발생하지 않고,
// 나머지 데이터는 위에서 변수에 저장된 데이터를 그대로 insert 한다.
articleRepository.insert_get_id(number, get_content, get_title); // insert 수행 2차
} else {
log.info("값이 정확하지 않습니다. 값을 확인해 주세요.");
}
return "redirect:/articles/" + saved.getId(); // 작업 후 결과값을 보여주기 위한 return 값 (예: 11 title 내용 content 내용)
}
}
Repository, 쿼리는 걍 네이티브 쿼리 씀.
@Transactional
@Modifying
@Query(value = "insert into Article (id, content, title) values (:number, :get_content, :get_title)", nativeQuery = true)
int insert_get_id(@Param("number") Long number,
@Param("get_content") String get_content,
@Param("get_title") String get_title);
어쨌든, 실행은 된다.
- 끝 -
728x90
반응형
'🌱JAVA > 시나리오 개발' 카테고리의 다른 글
<SpringBoot> 게시판에 검색 기능 구현하기 (0) | 2023.04.28 |
---|---|
<SpringBoot> Swagger 적용해보기 (0) | 2023.04.27 |
<SpringBoot> 댓글이 있는 게시글 삭제 시 오류 메세지 출력 및 게시글 삭제하기 (0) | 2023.04.27 |
내 마음대로 API 개발하기 (0) | 2022.09.07 |
Insert 시 PK 값을 자동으로 늘려주는 API (0) | 2022.09.05 |