v1
★ LAB · DB

첫 DB 종단간

데이터와 MyBatis — 실습

📍 지금 어디를 만지고 있나요?
브라우저
데이터와 MyBatis
DB

사전 준비

이번 실습의 목표

브라우저 → Controller → Service → Mapper → DB → 다시 화면. 흐름도가 처음 끝에서 끝까지 연결.

1
DB 에 회원 한 명 INSERT
USE spring_db;
INSERT INTO mymember(id, pwd) VALUES('hong', 'temp1234');
SELECT * FROM mymember;
CHECKPOINT
  • SELECT 결과에 ('hong', 'temp1234') 한 행이 보이는가?
2
Member VO + Mapper 인터페이스
// com/smhrd/domain/Member.java
@Data @AllArgsConstructor @NoArgsConstructor
public class Member {
    private String id;
    private String pwd;
}

// com/smhrd/mapper/MemberMapper.java
@Mapper public interface MemberMapper {
    Member selectOne(String id);
}
CHECKPOINT
  • 두 클래스 모두 com.smhrd.* 패키지인가?
  • 컴파일 오류가 없는가?
3
Mapper XML
<!-- src/main/resources/com/smhrd/mapper/MemberMapper.xml -->
<mapper namespace="com.smhrd.mapper.MemberMapper">
  <select id="selectOne"
          parameterType="string"
          resultType="com.smhrd.domain.Member">
    SELECT id, pwd FROM mymember WHERE id = #{id}
  </select>
</mapper>
CHECKPOINT
  • namespace 가 인터페이스 풀 클래스명과 정확히 같은가?
4
Service + Controller + JSP
// com/smhrd/service/MemberService.java
@Service
public class MemberService {
    @Autowired MemberMapper mapper;
    public Member find(String id) { return mapper.selectOne(id); }
}

// com/smhrd/controller/MemberController.java
@Controller
public class MemberController {
    @Autowired MemberService service;
    @GetMapping("/member/view")
    public String view(@RequestParam String id, Model model) {
        model.addAttribute("member", service.find(id));
        return "member/view";
    }
}

<!-- /WEB-INF/views/member/view.jsp -->
<h1>${member.id}</h1>
<p>${member.pwd}</p>
CHECKPOINT
  • Tomcat 시작 후 /member/view?id=hong 접속
  • 화면에 hong + temp1234 가 보이는가?
  • 콘솔에 SELECT id, pwd FROM mymember WHERE id = ? SQL 로그가 찍혔는가?

실습 완료 체크리스트

mymember 에 회원 한 명 INSERT
com.smhrd.domain.Member + MemberMapper + XML 작성
Service + Controller + JSP 까지 모두 연결
브라우저에서 회원 정보가 표시됨