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" >
<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 |