1 문제.
mapper.xml 파일 생성 시 에러 발생
<?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">
<mapper namespace="com.gd.hr.mapper.JoinMapper"></mapper>
위의 코드 에서
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> --- 부분에서 빨간 줄 발생
1 해결.
Window - Preferences - xml 검색 - XML (Wild Web Developer) 에서
Download external resources like referenced DTD, XSD 체크 후 Apply
2 문제.
컨트롤러 통해 view 접근 시 NoResourceFoundException 예외와 함게
404 error 발생 (no static resource error)
접근한 url = http://localhost/hr/deptEmpList
2 해결.
해당 프로젝트 application.properties 설정에서
server.servlet.context-path=/ <-- 로 설정 되어 있있었기 때문에
접근한 url인 http://localhost/hr/deptEmpList 에서 hr 부분을 인식하지 못함
server.servlet.context-path=/hr <--로 수정 후 view 접근 성공 확인
3 문제.
게시판 글 작성 액션 쿼리에서 SQLSyntax error 발생
3 해결.
INSERT 문에서 컬럼에 Alias를 사용해서 에러가 났던것
INSERT 문에서는 Alias 쓸 필요가 없음 (바보같은 실수 어휴)
4 문제.
homework MyBatis 과제 진행 도중 input checkbox를 사용해
여러개의 value를 받아서 List<String>hobbyName 변수에 넣으려고 했지만
반응이 없고 계속 null을 반환함
4 해결.
input checkbox로 넘기는 parameter의 name 속성을 name="hobby" 로
지정해뒀던 반면, parameter를 저장할 AddMember DTO의
List<String> 변수의 이름은 hobbyName 이었기 때문에
input checkbox의 name 속성명인 hobby 와
AddMember DTO의 변수명인 hobbyName이 일치하지 않았기 때문에
parameter가 제대로 전달되지 않았다
DTO의 변수명을 List<String> hobby로 변경 후 관련 Service와 Controller의
변수명을 hobby로 변경 후 정상적으로 DB에 데이터가 저장되는 것 확인
AddMember.java (DTO)
package com.gd.homework.dto;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddMember {
private String memberId;
private String memberPw;
private String memberName;
private List<String> hobbyName;
}
MemberService.java (Service)
package com.gd.homework.service;
@Service
@Slf4j
@Transactional
public class MemberService {
@Autowired
MemberMapper memberMapper;
@Autowired
HobbyMapper hobbyMapper;
public void addMember(AddMember am) {
Member m = new Member();
m.setMemberId(am.getMemberId());
m.setMemberName(am.getMemberName());
m.setMemberPw(am.getMemberPw());
memberMapper.insertMember(m);
log.debug(TeamColor.YELLOW + "m : " + m.getMemberId());
log.debug(TeamColor.YELLOW + "m : " + m.getMemberName());
log.debug(TeamColor.YELLOW + "m : " + m.getMemberPw());
if(am.getHobbyName() != null) {
for(String s : am.getHobbyName()) {
Hobby h = new HobbyName(m.getMemberNo(), s);
hobbyMapper.insertHobby(h);
log.debug(TeamColor.YELLOW + "h : " + h.getHobbyName());
}
}
}
}
signUpMember.jsp (View - Post request)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sign Up Member</title>
</head>
<body>
<h1>회원가입</h1>
<form method="post" action="${pageContext.request.contextPath}/signUpMember">
<div>
Member ID :
<input type="text" name="memberId">
</div>
<div>
Member PW :
<input type="text" name="memberPw">
</div>
<div>
Member Name :
<input type="text" name="memberName">
</div>
<div>
<input type="checkbox" name="hobby" value="football">축구
<input type="checkbox" name="hobby" value="baseball">야구
<input type="checkbox" name="hobby" value="basketball">농구
</div>
<button type="submit">회원가입</button>
</form>
</body>
</html>