본문 바로가기
개발 수업/Spring

[spring] 상세보기

by 오늘 하루s 2023. 8. 11.
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