Spring(MyBatis)_01

2025. 2. 5. 17:16·Spring, Boot/기초 내용 정리

2025-01-23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

		<!-- lombok 라이브러리 -->
		<dependency>
		    <groupId>org.projectlombok</groupId>
		    <artifactId>lombok</artifactId>
		    <version>1.18.36</version>
		    <scope>provided</scope>
		</dependency>
		
		<!-- spring-jdbc 라이브러리 -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-jdbc</artifactId>
		    <version>${org.springframework-version}</version>
		</dependency>
		
		<!-- mybatis framework 라이브러리 -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.4.6</version>
		</dependency>
		
		<!-- mybatis-spring 라이브러리 -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>1.3.1</version>
		</dependency>

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" pageEncoding="UTF-8" %>
<html>
<head>
	<title>Home</title>
</head>
<body>

	<div align="center">
		<hr width="30%" color="gray">
			<h3>MEMBER10 테이블 메인 페이지</h3>
		<hr width="30%" color="gray">
		<br> <br>
		
		<a href="<%=request.getContextPath() %>/member_list.go">[회원 전체 목록]</a>
	</div>

</body>
</html>

 

package com.spring.mybatis01;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

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 org.springframework.web.bind.annotation.RequestParam;

import com.spring.model.Member;
import com.spring.model.MemberDAO;

@Controller
public class MemberController {

	@Autowired
	private MemberDAO dao;
	
	
	@RequestMapping("member_list.go")
	public String list(Model model) {
	
		List<Member> list = this.dao.getMemberList();
		
		model.addAttribute("memberList", list);
		
		return "/member/member_list";
	}
	
	
	@RequestMapping("member_insert.go")
	public String insert() {
		
		return "/member/member_insert";
	}
	
	
	@RequestMapping("member_insert_ok.go")
	public void insertOk(Member dto,
						HttpServletResponse response) throws IOException {
		
		int chk = this.dao.insertMember(dto);
		
		response.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		if (chk > 0) {
			out.println("<script>");
			out.println("alert('회원 등록 성공!!!')");
			out.println("location.href='member_list.go'");
			out.println("</script>");
		} else {
			out.println("<script>");
			out.println("alert('회원 등록 실패~~~')");
			out.println("history.back()");
			out.println("</script>");
		}
	}
	
	
	@RequestMapping("member_content.go")
	public String content(@RequestParam("num") int no, Model model) {
		Member cont = this.dao.getMember(no);
		
		model.addAttribute("Cont", cont);
		
		return "/member/member_content";
	}
	
	
	@RequestMapping("member_search.go")
	public String search(@RequestParam("field") String field,
						@RequestParam("keyword") String keyword,
						Model model) {
		
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("Field", field);
		map.put("Keyword", keyword);
		
		List<Member> searchList = this.dao.searchMemberList(map);
		
		model.addAttribute("SearchList", searchList);
		
		return "member/member_searchList";
	}
}

 

package com.spring.model;

import java.util.List;
import java.util.Map;

public interface MemberDAO {

	// 회원 전체 리스트를 호출하는 추상 메서드
	List<Member> getMemberList();
	
	// 회원을 추가하는 추상 메서드
	int insertMember(Member dto);
	
	// 한 회원의 정보를 호출하는 추상 메서드
	Member getMember(int num);
	
	// 한 회원의 정보를 수정하는 추상 메서드
	int updateMember(Member dto);
	
	// 한 회원을 삭제하는 추상 메서드
	int deleteMember(int num);
	
	// 회원 번호(순번)를 재작업하는 추상 메서드
	void updateSequence(int num);
	
	// 검색하는 추상 메서드
	List<Member> searchMemberList(Map<String, String> map);
}

 

package com.spring.model;

import java.util.List;
import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository	// DB와 접근하는 DAO객체는 반드시 @repository를 붙여야 한다.
public class MemberDAOImpl implements MemberDAO {

	@Autowired
	private SqlSessionTemplate sqlSession;
	
	
	@Override
	public List<Member> getMemberList() {
		return this.sqlSession.selectList("all");
	}

	@Override
	public int insertMember(Member dto) {
		return this.sqlSession.insert("add", dto);
	}

	@Override
	public Member getMember(int num) {
		return this.sqlSession.selectOne("cont", num);
	}

	@Override
	public int updateMember(Member dto) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int deleteMember(int num) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void updateSequence(int num) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public List<Member> searchMemberList(Map<String, String> map) {
		return this.sqlSession.selectList("search", map);
	}

}

 

<?xml version="1.0" encoding="UTF-8"?>

<!-- 
	DTD(Document Type Definition)
	- 작성한 문서가 어떤 문서인지에 대해서 정의해 놓은 것.
	- 하나의 시스템 내에서 사용할 XML 데이터의 구조를 정의하여
	  유효성을 점검 시 사용하는 태그.
 -->

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
<!-- 
	- namespace 명은 주로 패키지명을 포함해서 DAO 인터페이스
	  이름으로 작성하느 것이 관례임.
	- namespace 명은 mapper 들을 구분하는데 식별자로 사용함.
	- DTO의 필드명과 DB의 컬럼명과 반드시 같아야 자동으로 link가 됨.
 -->
<mapper namespace="com.spring.model.MemberDAO">

	<select id="all" resultType="com.spring.model.Member">
		select * from member10 order by num desc
	</select>


	<insert id="add" parameterType="com.spring.model.Member">
		insert into member10 values(
			(select max(num) from member10) + 1,
			#{memid}, #{memname}, #{pwd}, #{age},
			#{mileage}, #{job}, #{addr}, sysdate
		)
	</insert>
	
	
	<select id="cont" parameterType="int" resultType="com.spring.model.Member">
		select * from member10 where num = #{num}
	</select>
	
	<select id="search" parameterType="map" resultType="com.spring.model.Member">
		select * from member10
		
		<if test="Field == 'name'">		<!-- "Field" ==> key값에 들어있는 이름 -->
			where memname
		</if> 
		
		<if test="Field == 'job'">		<!-- "Field" ==> key값에 들어있는 이름 -->
			where job
		</if>
		
		<if test="Field == 'addr'">		<!-- "Field" ==> key값에 들어있는 이름 -->
			where addr
		</if>
		
		like '%' || #{Keyword} || '%' order by num desc
	</select>

</mapper>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<div align="center">
		<hr width="30%" color="maroon">
			<h3>MEMBER10 테이블 회원 전체 리스트 페이지</h3>
		<hr width="30%" color="maroon">
		<br> <br>
		
		<table border="1" width="450">
			<tr>
				<th>회원 No.</th> <th>회원 이름</th> <th>회원 직업</th> <th>회원 등록일</th>
			</tr>
			
			<c:set var="list" value="${memberList }"></c:set>
			<c:if test="${!empty list }">
				<c:forEach items="${list }" var="dto">
					<tr>
						<td>${dto.num }</td>
						<td><a href="<%=request.getContextPath() %>/member_content.go?num=${dto.num }">
							${dto.memname }</a></td>
						<td>${dto.job }</td>
						<td>${dto.regdate.substring(0, 10) }</td>
					</tr>
				</c:forEach>
			</c:if>
			
			<c:if test="${empty list }">
				<tr>
					<td colspan="4" align="center">
						<h3>전체 회원 리스트가 없습니다...</h3>
					</td>
				</tr>
			</c:if>
		</table>
		<br> <br>
		
		<input type="button" value="회원등록"
			onclick="location.href='member_insert.go'">
		<br> <br>
		
		<%-- 검색 폼 영역 --%>
		<form method="post" action="<%=request.getContextPath() %>/member_search.go">
			<select name="field">
				<option value="name">이름</option>
				<option value="job">직업</option>
				<option value="addr">주소</option>
			</select>
			
			<input name="keyword" >&nbsp;&nbsp;
			<input type="submit" value="검색">
		</form>
	</div>

</body>
</html>

'Spring, Boot > 기초 내용 정리' 카테고리의 다른 글

Spring(MyBatis)_03  (0) 2025.02.05
Spring(MyBatis)_02  (0) 2025.02.05
Spring(MyBatis)_00  (1) 2025.02.05
Spring(JDBC)_01  (1) 2025.01.22
Spring(JDBC)_00  (1) 2025.01.22
'Spring, Boot/기초 내용 정리' 카테고리의 다른 글
  • Spring(MyBatis)_03
  • Spring(MyBatis)_02
  • Spring(MyBatis)_00
  • Spring(JDBC)_01
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
Spring(MyBatis)_01
상단으로

티스토리툴바