SpringBoot/Project
[Spring] 프로젝트 - Shop 등록
함형우
2022. 9. 6. 19:00
728x90
계정을 생성할때 작성했던 memberVO처럼, 가게 등록에 필요한 ShopVO를 작성하려고 한다.
ShopVO.JAVA
package edu.hi.model;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ShopVO {
/** 가게 아이디 */
private int shopId;
/** 가게 이름 */
private String shopName;
/** 소속 id */
private String nationId;
/** 가게 소속 */
private String nationName;
/** 가게 소개 */
private String shopIntro;
/** 등록 날짜*/
private Date regDate;
/** 수정 날짜 */
private Date updateDate;
}
Oracle에 등록한 칼럼들을 기반으로 하여 vo를 작성해주었다.
<!-- 가게 등록 -->
<insert id="shopEnroll">
insert into shop_author(shopId,shopName, nationId, shopIntro) values(NO_SEQ.NEXTVAL,#{shopName}, #{nationId}, #{shopIntro} )
</insert>
기존에 존재하는 MemberMapper와 별개로, ShopMapper를 따로 생성하여 그 안에 shopEnroll를 작성하였다.
package edu.hi.mapper;
import org.apache.ibatis.annotations.Mapper;
import edu.hi.model.ShopVO;
@Mapper
public interface ShopMapper {
/** 작가 등록 */
public void shopEnroll(ShopVO shop);
}
package edu.hi.service;
import edu.hi.model.ShopVO;
public interface ShopService {
/* 작가 등록 */
public void shopEnroll(ShopVO shop) throws Exception;
}
package edu.hi.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import edu.hi.mapper.ShopMapper;
import edu.hi.model.ShopVO;
@Service
public class ShopServiceImpl implements ShopService {
@Autowired
ShopMapper shopMapper;
@Override
public void shopEnroll(ShopVO shop) throws Exception {
shopMapper.shopEnroll(shop);
}
}
Mapper 그리고 Service와 ServiceImpl이다. 어노테이션일 잘 확인하고 작성한 후에 실행이 되는지 점검한다. Autowired 같은 경우, mapper설정이 제대로 되지 않았을 시에는 오류가 난다.
기존의 AdminController 단을 편집해준다.
/* 작가 등록 */
@RequestMapping(value="shopEnroll.do", method = RequestMethod.POST)
public String shopEnrollPOST(ShopVO shop, RedirectAttributes rttr) throws Exception{
logger.info("shopEnroll :" + shop);
}
리퀘스트맵핑을 이용하여, POST 형식으로 데이터를 받아올 예정이다. 회원가입에 썼던 로직을 그대로 사용하려한다.
728x90