반응형
간단하게 CRUD 프로젝트를 만들었다.
이번에는 만들면서 다시 공부도 해보고 이제 막 Spring을 시작하는 후배한테 알려줄 겸해서 만들고 있다.
https://github.com/ohju96/crudTest
깃 허브에도 코드를 올려두었다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- JAVA와 연결할 Mapper 파일 설정 -->
<mapper namespace="com.example.crudtest.mapper.UserMapper">
<!-- User 등록하기-->
<insert id="insertUser" parameterType="com.example.crudtest.dto.UserDto">
INSERT INTO USER(id, pw)
VALUES (#{userId}, #{userPw})
</insert>
<!-- ID 중복 체크-->
<select id="checkUserId" parameterType="com.example.crudtest.dto.UserDto" resultType="int">
SELECT COUNT(*)
FROM USER
WHERE id = #{userId}
</select>
</mapper>
매퍼에서는 등록하는 코드와 중복 체크를 위한 코드를 .xml에 작성해 주었다.
@Mapper
public interface UserMapper {
// 유저 등록하기 : create 로직에 사용
int insertUser(UserDto userDto) throws Exception;
// 유저 아이디 등록 여부 체크 : create 로직에 사용
int checkUserId(UserDto userDto) throws Exception;
}
.xml과 매퍼 인터페이스를 연결해주었고
@Slf4j
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
@Override
public RedirectDto insertUser(UserDto userDto) throws Exception {
log.info("### insertUser start");
log.info("### userDto 값이 잘 넘어 왔는지 확인 : {}", userDto);
RedirectDto redirectDto = new RedirectDto();
// 아이디 중복 체크 로직 : 1 이상 -> 아이디 존재, 0 -> 없음
if (userMapper.checkUserId(userDto) == 1) {
log.info("### 중복 체크에 걸림 : 중복된 아이디 : {}", userDto.getUserId());
redirectDto.setMsg("이미 존재하는 아이디입니다. 다른 아이디를 입력해주세요.");
redirectDto.setUrl("/crud/create");
log.info("### insertUser end");
return redirectDto;
}
// User 등록 : 정상 등록 -> 1, 그 외 -> 비정상
if (userMapper.insertUser(userDto) == 1) {
redirectDto.setMsg("정상 등록 되었습니다.");
redirectDto.setUrl("/index");
} else {
redirectDto.setMsg("등록에 문제가 생겼습니다.");
redirectDto.setUrl("/crud/create");
}
log.info("### insertUser end");
return redirectDto;
}
}
서비스에서 중복 여부와 정상 등록 여부를 판단해 redirectDTO를 통해 값을 Controller에 넘겨주었다.
@PostMapping("/create")
public String insertUser(HttpServletRequest request, Model model) throws Exception {
log.info("### insertUser start");
UserDto userDto = new UserDto();
userDto.setUserId(request.getParameter("userId"));
userDto.setUserPw(request.getParameter("userPw"));
log.info("### userDto : {}", userDto);
RedirectDto redirectDto = userService.insertUser(userDto);
log.info("### redirectDto : {}", redirectDto);
model.addAttribute("msg", redirectDto.getMsg());
model.addAttribute("url", redirectDto.getUrl());
log.info("### insertUser end");
return "/redirect";
}
Controller에서는 view에서 입력한 정보를 받아 userDto에 넣어주고 이 정보를 서비스에 넘긴 뒤 redirectDto를 리턴 받아 상태에 따른 msg와 url을 redirect로 넘겨주어 alert로 상태를 알리고 상태에 맞는 url로 넘어가도록 설정해 주었다.
이 다음은 조회 로직을 작성 할 것이다.
반응형
'Project > 토이 프로젝트' 카테고리의 다른 글
[CRUD프로젝트] : thymeleaf list로 값 받아오기 (번외) (0) | 2022.07.01 |
---|---|
[MSA-Test-Project] : gateway 구현해보기 (0) | 2022.06.21 |
[MSA-Test-Project] : MSA, ServiceDiscovery Setting (0) | 2022.06.19 |
댓글