개발 수업/Spring
[spring] 상세보기
오늘 하루s
2023. 8. 11. 08:53
728x90
더보기
Day73. 230810
Controller->Service->DAO(repository)->myBatis->DB을 거쳐 상세보기를 해보았다.
MemberController.java>
package com.mycom.member.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.mycom.member.domain.MemberDTO;
import com.mycom.member.service.MemberServiceImpl;
//Controller->Service->DAO(repository)->myBatis->DB
@Controller
@RequestMapping("/member")
public class MemberController {
//필드
@Autowired
private MemberServiceImpl memberServiceImpl;
//생성자
//메서드
//전체회원수 조회
//요청주소 http://localhost:8081/app/totalMember
//get방식
@RequestMapping("/totalMember")
public void getTotalMemberCNT(Model model) {
//1.파라미터받기
//2.비지니스로직<->Service<->DAO(repository)<->myBatis<->DB
int totalMemberCNT = memberServiceImpl.getTotalMemberCNT();
//3.Model
model.addAttribute("totalMemberCNT",totalMemberCNT);
System.out.println("전체회원수 totalMemberCNT:"+totalMemberCNT);
//4.View->여기에서는 WEB-INF/views/member/totalMember.jsp 존재하지 않으므로 404에러발생
//return "member/totalMember";
}
//id로 회원정보조회
@RequestMapping("/getMember")
//리턴 MemberDTO- no,memberid,password,name,regdate,isshow
public String getMemberById(Model model) {
MemberDTO memberDTO = memberServiceImpl.getMemberById();
System.out.println(memberDTO);
model.addAttribute("memberDTO",memberDTO);
return "/member/memberInfo";
}
//목록조회
//@RequestMapping("/getMemberList")
}
@RequestMapping("/member")을 맨 위에 빼두었기 때문에
@RequestMapping 주소에 /member를 빼도 요청주소에 추가된다.
MemberServiceImpl.java>
package com.mycom.member.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mycom.member.domain.MemberDTO;
import com.mycom.member.repository.MemberRepositoryImpl;
//InterfaceMemberRepository의 구현클래스가 될 얘정
//public class MemberRepositoryImpl implements MemberRepository
//Controller->Service->DAO(repository)->myBatis->DB
@Service
public class MemberServiceImpl {
//필드
@Autowired
private MemberRepositoryImpl memberRepositoryImpl;
//생성자
//메서드
//회원수 조회
public int getTotalMemberCNT() {
int totalMemberCNT = memberRepositoryImpl.selectTotalMemberCNT();//dao의 메소드호출
return totalMemberCNT;
}
//id로 회원정보조회
//리턴 MemberDTO- no,memberid,password,name,regdate,isshow
public MemberDTO getMemberById() {
MemberDTO memberDTO = memberRepositoryImpl.selectMemberById();
return memberDTO;
}
//목록조회
}
MemberRepositoryImpl.java>
package com.mycom.member.repository;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.mycom.member.domain.MemberDTO;
//InterfaceMemberRepository의 구현클래스가 될 얘정
//public class MemberRepositoryImpl implements MemberRepository
//DAO역할을 하는 클래스. DB작업
//Controller->Service->DAO->myBatis->DB
@Repository
public class MemberRepositoryImpl{
//필드
@Autowired
private SqlSession sqlSession;
//생성자
//메서드
//회원수 조회
public int selectTotalMemberCNT() {
int totalMemberCNT = (Integer)sqlSession.selectOne("member.totalMemberCNT");
return totalMemberCNT;
}
//id로 회원정보조회
//리턴 MemberDTO- no,memberid,password,name,regdate,isshow
public MemberDTO selectMemberById() {
MemberDTO memberDTO=(MemberDTO)sqlSession.selectOne("member.selectById");
return memberDTO;
}
//목록조회
}
sqlSession.selectOne은 하나의 쿼리문을 실행할 때 사용한다.
member.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="member">
<!-- 회원수 조회 -->
<!-- <select id="유니크한id명" resultType="자바의 데이터타입">
예시 <select id="totalMemberCNT" resultType="java.lang.Integer">
myBatis에서는 자바의 데이터타입이 내장되어 별칭(alias)으로 제공되고 있다.
short(별칭) Short(자바의 데이터 타입)
int Integer
hashmap Hashmap
list List
arraylist ArrayList-->
<select id="totalMemberCNT" resultType="int">
<![CDATA[
select count(no)
from member
]]>
</select>
<!-- 목록조회
resultType="java.util.Map"으로 작성하는 것이 원칙이나
myBatis에서 내장되어 제공되는 typeAliases를 사용하면 resultType="map"으로 작성가능-->
<select id="selectMemberList" resultType="map">
<![CDATA[
select no,memberid,password,name,regdate,isshow
from member
]]>
</select>
<!-- id로 회원정보조회 -->
<select id="selectById" resultType="com.mycom.member.domain.MemberDTO">
<![CDATA[
select no,memberid,password,name,regdate,isshow
from member
where memberid='hongid'
]]>
</select>
</mapper>
memberInfo.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>memberInfo.jsp</h1>
<%-- model.addAttribute("memberDTO",memberDTO);--%>
memberDTO=${memberDTO}<hr/>
<table id="memberTable" border="1">
<tbody>
<tr>
<th>번호</th><td>${memberDTO.no}</td>
</tr>
<tr>
<th>아이디</th><td>${memberDTO.memberid}</td>
</tr>
<tr>
<th>이름</th><td>${memberDTO.name}</td>
</tr>
<tr>
<th>가입일</th><td>${memberDTO.regDate}</td>
</tr>
<tr>
<th>비번</th><td>${memberDTO.password}</td>
</tr>
<tr>
<th>isshow</th><td>${memberDTO.isshow}</td>
</tr>
</tbody>
<tbody>
</tbody>
</table>
</body>
</html>
memberDTO>
package com.mycom.member.domain;
import java.util.Date;
//member 테이블관련 data저장,제공 등의 기능을 제공 클래스
public class MemberDTO {
private int no; //회원번호.pk
private String memberid; //회원id
private String password; //비번
private String name; //회원명
private Date regDate; //가입일
private String isshow; //노출여부.isshow 기본값'Y', 삭제시 'N'
public MemberDTO() {}
public MemberDTO(int no, String memberid, String password, String name, Date regDate, String isshow) {
super();
this.no = no;
this.memberid = memberid;
this.password = password;
this.name = name;
this.regDate = regDate;
this.isshow = isshow;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getMemberid() {
return memberid;
}
public void setMemberid(String memberid) {
this.memberid = memberid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public String getIsshow() {
return isshow;
}
public void setIsshow(String isshow) {
this.isshow = isshow;
}
@Override
public String toString() {
return "MemberDTO [no=" + no + ", memberid=" + memberid + ", password=" + password + ", name=" + name
+ ", regDate=" + regDate + ", isshow=" + isshow + "]";
}
}
728x90