동적 SQL(Dynamic SQL) : 전달값에 따라 다른 SQL 명령이 엘리먼트에 등록되는 기능
package xyz.itwill.dto;
public class MyHewon {
private String id;
private String name;
private String phone;
private String email;
private int state;
public MyHewon() {
// TODO Auto-generated constructor stub
}
public MyHewon(String id, String name, String phone, String email, int state) {
super();
this.id = id;
this.name = name;
this.phone = phone;
this.email = email;
this.state = state;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
}
- 이름을 전달받지 않을 경우 MYHEWON 테이블에 저장된 모든 회원정보를 검색하고 이름을 전달받은 경우 MYHEWON 테이블에 저장된 해당 이름의 회원정보를 검색하여 검색결과를 제공하는 엘리먼트
- 동적 SQL 관련 엘리먼트를 사용하여 전달값에 따라 SQL 명령이 다르게 등록되도록 설정
- 아이디 또는 이름을 전달받지 않은 경우 MYHEWON 테이블에 저장된 모든 회원정보를 검색하고 아이디 또는 이름을 전달받은 경우 MYHEWON 테이블에 저장된 회원정보 중 해당 아이디 또는 이름의 회원정보를 검색하여 검색결과를 제공하는 엘리먼트
- if문을 두번 사용했을 경우 문제점 : 아이디와 이름이 모두 전달된 경우 에러 발생
- 모든 if 엘리먼트의 test 속성값이 [true]이므로 WHERE 문장이 2번 포함
- 해결법1 : 아이디와 이름이 모두 전달돼도 하나의 WHERE 문장만 포함되도록 설정
- 해결법2 : 아이디와 이름이 모두 전달된 경우 하나의 WHERE 문장에 포함되도록 설정
trim : 엘리먼트 내용에 필요한 값을 추가하거나 삭제하여 SQL 명령에 포함하는 엘리먼트
where : 엘리먼트 내용이 존재할 경우 엘리먼트 내용 앞에 [and] 또는 [or] 키워드가 있으면 삭제하고 [where] 키워드를 추가하여 SQL 명령에 포함하는 엘리먼트
- 회원정보를 전달받아 MYHEWON 테이블에 저장된 회원정보를 변경하는 엘리먼트
- 아이디를 비교하여 아이디를 제외한 모든 회원정보 변경 (변경값 미입력시 초기값으로 변경됨 → 비정상적인 결과)
- 아이디를 비교하여 아이디를 제외한 전달값이 존재하는 회원정보 변경 (변경값 미입력시 변경안됨)
- test 속성값에서 관계연산자를 기호(>,<,>=,<=) 대신 문자(gt,lt,gte,lte)로 표현하여 사용
<if test="state gte 1 and state lte 4">
- 관계연산자를 기호로 사용한 경우 에러 발생
- 아이디 목록을 전달받아 MYHEWON 테이블에 저장된 해당 아이디의 회원정보를 검색하여 검색결과를 제공하는 엘리먼트
- 아이디 목록을 전달받지 못한 경우 MYHEWON 테이블에 저장된 모든 회원정보 검색
- parameterType 속성값으로 ArrayList 클래스(List 인터페이스)를 설정하여 아이디 목록을 List 객체로 제공받아 사용
- parameterType 속성값으로 ArrayList 클래스(List 인터페이스)를 설정한 경우 List 객체를 전달받아 SQL명령에서 [list] 이름으로 표현하여 사용
<select id="selectMultiDynamicHewonList" parameterType="list" resultMap="myHewonResultMap">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xyz.itwill.mapper.MyHewonMapper">
<!-- 이름을 전달받아 MYHEWON 테이블에 저장된 해당 이름의 회원정보를 검색하여 검색결과를
제공하는 엘리먼트 -->
<select id="selectNameHewonList" parameterType="string" resultMap="myHewonResultMap">
select * from myhewon where hewon_name=#{name} order by hewon_id
</select>
<!-- 동적 SQL(Dynamic SQL) : 전달값에 따라 다른 SQL 명령이 엘리먼트에 등록되는 기능 -->
<!-- => OGNL(Object Graph Navigation Language) 표현식을 사용하여 구현 -->
<!-- 이름을 전달받지 않을 경우 MYHEWON 테이블에 저장된 모든 회원정보를 검색하고 이름을 전달받은
경우 MYHEWON 테이블에 저장된 해당 이름의 회원정보를 검색하여 검색결과를 제공하는 엘리먼트 -->
<!-- => 동적 SQL 관련 엘리먼트를 사용하여 전달값에 따라 SQL 명령이 다르게 등록되도록 설정 -->
<select id="selectDynamicNameHewonList" parameterType="string" resultMap="myHewonResultMap">
select * from myhewon
<!-- if : 조건에 의해 엘리먼트 내용(SQL 명령을 구성하는 문장)의 포함여부를 설정하는 엘리먼트 -->
<!-- test 속성 : false(엘리먼트 내용 미포함) 또는 true(엘리먼트 내용 포함) 중 하나를 속성값으로 설정 -->
<!-- => parameterType 속성으로 전달된 값에 대한 조건식을 사용하여 test 속성값으로 제공 -->
<if test="name!=null and name!=''"><!-- 전달값(이름)이 있는 경우 >> [true] -->
where hewon_name=#{name}
</if>
order by hewon_id
</select>
<!-- 아이디 또는 이름을 전달받지 않은 경우 MYHEWON 테이블에 저장된 모든 회원정보를 검색하고
아이디 또는 이름을 전달받은 경우 MYHEWON 테이블에 저장된 회원정보 중 해당 아이디 또는
이름의 회원정보를 검색하여 검색결과를 제공하는 엘리먼트 -->
<!-- 문제점)아이디와 이름이 모두 전달된 경우 에러 발생 -->
<!-- => 모든 if 엘리먼트의 test 속성값이 [true]이므로 WHERE 문장이 2번 포함 -->
<!--
<select id="selectDynamicHewonList" parameterType="map" resultMap="myHewonResultMap">
select * from myhewon
<if test="id!=null and id!=''">
where hewon_id=#{id}
</if>
<if test="name!=null and name!=''">
where hewon_name=#{name}
</if>
order by hewon_id
</select>
-->
<!-- 해결법-1)아이디와 이름이 모두 전달돼도 하나의 WHERE 문장만 포함되도록 설정 -->
<!-- choose : 조건에 맞는 하나의 엘리먼트 내용(SQL 명령을 구성하는 문장)이 포함되도록 설정하는 엘리먼트 -->
<!-- => 하위 엘리먼트 : when 엘리먼트(1개 이상), otherwise 엘리먼트(0개 또는 1개) -->
<!-- => 다수의 하위 엘리먼트 중 하나의 엘리먼트 내용만 SQL 명령에 포함 -->
<!-- when : 조건에 의한 엘리먼트 내용 포함여부를 설정하는 엘리먼트 -->
<!-- test 속성 : false(엘리먼트 내용 미포함) 또는 true(엘리먼트 내용 포함) 중 하나를 속성값으로 설정 -->
<!-- otherwise : when 엘리먼트의 모든 조건이 거짓인 경우 엘리먼트 내용을 SQL 명령에 포함하는 엘리먼트 -->
<!--
<select id="selectDynamicHewonList" parameterType="map" resultMap="myHewonResultMap">
select * from myhewon
<choose>
<when test="id!=null and id!=''">
where hewon_id=#{id}
</when>
<when test="name!=null and name!=''">
where hewon_name=#{name}
</when>
</choose>
order by hewon_id
</select>
-->
<!-- 해결법-2)아이디와 이름이 모두 전달된 경우 하나의 WHERE 문장에 포함되도록 설정 -->
<!-- trim : 엘리먼트 내용에 필요한 값을 추가하거나 삭제하여 SQL 명령에 포함하는 엘리먼트 -->
<!-- => 하위 엘리먼트로 다수의 if 엘리먼트 사용 -->
<!-- prefix 속성 : trim 엘리먼트에 엘리먼트 내용이 존재할 경우 엘리먼트 내용 앞에 추가될 문장을 속성값으로 설정 -->
<!-- prefixOverrides 속성 : trim 엘리먼트에 엘리먼트 내용이 존재할 경우 엘리먼트 내용 앞에 제거될 문장을 속성값으로 설정 -->
<!-- suffix 속성 : trim 엘리먼트에 엘리먼트 내용이 존재할 경우 엘리먼트 내용 뒤에 추가될 문장을 속성값으로 설정 -->
<!-- suffixOverrides 속성 : trim 엘리먼트에 엘리먼트 내용이 존재할 경우 엘리먼트 내용 뒤에 제거될 문장을 속성값으로 설정 -->
<!--
<select id="selectDynamicHewonList" parameterType="map" resultMap="myHewonResultMap">
select * from myhewon
<trim prefix="where" prefixOverrides="and|or">
<if test="id!=null and id!=''">
hewon_id=#{id}
</if>
<if test="name!=null and name!=''">
${choice} hewon_name=#{name}
</if>
</trim>
order by hewon_id
</select>
-->
<!-- where : 엘리먼트 내용이 존재할 경우 엘리먼트 내용 앞에 [and] 또는 [or] 키워드가
있으면 삭제하고 [where] 키워드를 추가하여 SQL 명령에 포함하는 엘리먼트 -->
<!-- => 하위 엘리먼트로 다수의 if 엘리먼트 사용 -->
<select id="selectDynamicHewonList" parameterType="map" resultMap="myHewonResultMap">
select * from myhewon
<where>
<if test="id!=null and id!=''">
hewon_id=#{id}
</if>
<if test="name!=null and name!=''">
${choice} hewon_name=#{name}
</if>
</where>
order by hewon_id
</select>
<!-- 회원정보를 전달받아 MYHEWON 테이블에 저장된 회원정보를 변경하는 엘리먼트 -->
<!-- => 아이디를 비교하여 아이디를 제외한 모든 회원정보 변경 -->
<update id="updateHewon" parameterType="MyHewon">
update myhewon set hewon_name=#{name},hewon_phone=#{phone},hewon_email=#{email}
,hewon_state=#{state} where hewon_id=#{id}
</update>
<!-- 회원정보를 전달받아 MYHEWON 테이블에 저장된 회원정보를 변경하는 엘리먼트 -->
<!-- => 아이디를 비교하여 아이디를 제외한 전달값이 존재하는 회원정보 변경 -->
<!-- test 속성값에서 관계연산자를 기호(>,<,>=,<=) 대신 문자(gt,lt,gte,lte)로 표현하여 사용 -->
<!-- => 관계연산자를 기호로 사용한 경우 에러 발생 -->
<!--
<update id="updateDynamicHewon" parameterType="MyHewon">
update myhewon
<trim prefix="set" suffixOverrides=",">
<if test="name!=null and name!=''">
hewon_name=#{name},
</if>
<if test="phone!=null and phone!=''">
hewon_phone=#{phone},
</if>
<if test="email!=null and email!=''">
hewon_email=#{email},
</if>
<if test="state gte 1 and state lte 4">
hewon_state=#{state}
</if>
</trim>
where hewon_id=#{id}
</update>
-->
<!-- set : 엘리먼트 내용이 존재할 경우 엘리먼트 내용 뒤에 [,]가 있으면 삭제하고
엘리먼트 내용 앞에 [set] 키워드를 추가하여 SQL 명령에 포함하는 엘리먼트 -->
<!-- => 하위 엘리먼트로 다수의 if 엘리먼트 사용 -->
<update id="updateDynamicHewon" parameterType="MyHewon">
update myhewon
<set>
<if test="name!=null and name!=''">
hewon_name=#{name},
</if>
<if test="phone!=null and phone!=''">
hewon_phone=#{phone},
</if>
<if test="email!=null and email!=''">
hewon_email=#{email},
</if>
<if test="state gte 1 and state lte 4">
hewon_state=#{state}
</if>
</set>
where hewon_id=#{id}
</update>
<!-- 아이디 목록을 전달받아 MYHEWON 테이블에 저장된 해당 아이디의 회원정보를 검색하여
검색결과를 제공하는 엘리먼트 -->
<!-- => 아이디 목록을 전달받지 못한 경우 MYHEWON 테이블에 저장된 모든 회원정보 검색 -->
<!-- parameterType 속성값으로 ArrayList 클래스(List 인터페이스)를 설정하여 아이디 목록을
List 객체로 제공받아 사용 -->
<!-- => parameterType 속성값으로 ArrayList 클래스(List 인터페이스)를 설정한 경우 List 객체를
전달받아 SQL명령에서 [list] 이름으로 표현하여 사용 -->
<select id="selectMultiDynamicHewonList" parameterType="list" resultMap="myHewonResultMap">
select * from myhewon
<if test="list!=null">
where hewon_id in
<!-- foreach : 전달받은 List 객체의 요소값을 반복적으로 제공받아 SQL 명령에 포함하는 엘리먼트 -->
<!-- collection 속성 : 반복 처리하기 위한 List 객체의 이름을 속성값으로 설정 -->
<!-- item 속성 : List 객체의 요소값을 저장하기 위한 이름을 속성값으로 설정 -->
<!-- open 속성 : foreach 엘리먼트의 내용 앞부분에 추가될 문장을 속성값으로 설정 -->
<!-- close 속성 : foreach 엘리먼트의 내용 뒷부분에 추가될 문장을 속성값으로 설정 -->
<!-- separator 속성 : List 객체의 요소값을 구분하기 위한 문장을 속성값으로 설정 -->
<foreach collection="list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</if>
order by hewon_id
</select>
</mapper>
package xyz.itwill.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import xyz.itwill.dto.MyHewon;
public interface MyHewonMapper {
List<MyHewon> selectNameHewonList(String name);
List<MyHewon> selectDynamicNameHewonList(String name);
List<MyHewon> selectDynamicHewonList(Map<String, Object> map);
int updateHewon(MyHewon hewon);
int updateDynamicHewon(MyHewon hewon);
List<MyHewon> selectMultiDynamicHewonList(List<String> idList);
}
package xyz.itwill.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import xyz.itwill.dto.MyHewon;
import xyz.itwill.mapper.MyHewonMapper;
public class MyHewonDAO extends AbstractSession {
private static MyHewonDAO _dao;
private MyHewonDAO() {
// TODO Auto-generated constructor stub
}
static {
_dao=new MyHewonDAO();
}
public static MyHewonDAO getDAO() {
return _dao;
}
public int insertHewon(MyHewon hewon) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyHewonMapper.class).insertHewon(hewon);
} finally {
sqlSession.close();
}
}
public List<MyHewon> selectNameHewonList(String name) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyHewonMapper.class).selectNameHewonList(name);
} finally {
sqlSession.close();
}
}
public List<MyHewon> selectDynamicNameHewonList(String name) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyHewonMapper.class).selectDynamicNameHewonList(name);
} finally {
sqlSession.close();
}
}
public List<MyHewon> selectDynamicHewonList(Map<String, Object> map) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyHewonMapper.class).selectDynamicHewonList(map);
} finally {
sqlSession.close();
}
}
public int updateHewon(MyHewon hewon) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyHewonMapper.class).updateHewon(hewon);
} finally {
sqlSession.close();
}
}
public int updateDynamicHewon(MyHewon hewon) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyHewonMapper.class).updateDynamicHewon(hewon);
} finally {
sqlSession.close();
}
}
public List<MyHewon> selectMultiDynamicHewonList(List<String> idList) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyHewonMapper.class).selectMultiDynamicHewonList(idList);
} finally {
sqlSession.close();
}
}
}
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="xyz.itwill.dao.MyHewonDAO"%>
<%@page import="xyz.itwill.dto.MyHewon"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
List<MyHewon> hewonList=null;
if(name==null || name.equals("")) {//전달값이 없는 경우 - 검색기능 미사용
hewonList=MyHewonDAO.getDAO().selectHewonList();//전체 검색
} else {//전달값이 있는 경우 - 검색기능 사용
hewonList=MyHewonDAO.getDAO().selectNameHewonList(name);//조건 검색
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MYBATIS</title>
<style type="text/css">
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
text-align: center;
padding: 3px;
}
.id { width: 150px; }
.name { width: 150px; }
.phone { width: 200px; }
.email { width: 200px; }
.state { width: 100px; }
</style>
</head>
<body>
<h1>회원목록</h1>
<hr>
<table>
<tr>
<td class="id">아이디</td>
<td class="name">이름</td>
<td class="phone">전화번호</td>
<td class="email">이메일</td>
<td class="state">공개범위</td>
</tr>
<% if(hewonList.isEmpty()) { %>
<tr>
<td colspan="5">검색된 회원정보가 없습니다.</td>
</tr>
<% } else { %>
<% for(MyHewon hewon:hewonList) { %>
<tr>
<td><%=hewon.getId() %></td>
<td><%=hewon.getName() %></td>
<td><%=hewon.getPhone() %></td>
<td><%=hewon.getEmail() %></td>
<td><%=hewon.getState() %></td>
</tr>
<% } %>
<% } %>
</table>
<br>
<form method="post">
이름 : <input type="text" name="name">
<button type="submit">검색</button>
</form>
</body>
</html>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="xyz.itwill.dao.MyHewonDAO"%>
<%@page import="xyz.itwill.dto.MyHewon"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
List<MyHewon> hewonList=MyHewonDAO.getDAO().selectDynamicNameHewonList(name);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MYBATIS</title>
<style type="text/css">
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
text-align: center;
padding: 3px;
}
.id { width: 150px; }
.name { width: 150px; }
.phone { width: 200px; }
.email { width: 200px; }
.state { width: 100px; }
</style>
</head>
<body>
<h1>회원목록</h1>
<hr>
<table>
<tr>
<td class="id">아이디</td>
<td class="name">이름</td>
<td class="phone">전화번호</td>
<td class="email">이메일</td>
<td class="state">공개범위</td>
</tr>
<% if(hewonList.isEmpty()) { %>
<tr>
<td colspan="5">검색된 회원정보가 없습니다.</td>
</tr>
<% } else { %>
<% for(MyHewon hewon:hewonList) { %>
<tr>
<td><%=hewon.getId() %></td>
<td><%=hewon.getName() %></td>
<td><%=hewon.getPhone() %></td>
<td><%=hewon.getEmail() %></td>
<td><%=hewon.getState() %></td>
</tr>
<% } %>
<% } %>
</table>
<br>
<form method="post">
이름 : <input type="text" name="name">
<button type="submit">검색</button>
</form>
</body>
</html>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="xyz.itwill.dao.MyHewonDAO"%>
<%@page import="xyz.itwill.dto.MyHewon"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id=request.getParameter("id");
String name=request.getParameter("name");
String choice=request.getParameter("choice");
Map<String, Object> map=new HashMap<String, Object>();
map.put("id", id);
map.put("name", name);
map.put("choice", choice);
List<MyHewon> hewonList=MyHewonDAO.getDAO().selectDynamicHewonList(map);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MYBATIS</title>
<style type="text/css">
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
text-align: center;
padding: 3px;
}
.id { width: 150px; }
.name { width: 150px; }
.phone { width: 200px; }
.email { width: 200px; }
.state { width: 100px; }
</style>
</head>
<body>
<h1>회원목록</h1>
<hr>
<table>
<tr>
<td class="id">아이디</td>
<td class="name">이름</td>
<td class="phone">전화번호</td>
<td class="email">이메일</td>
<td class="state">공개범위</td>
</tr>
<% if(hewonList.isEmpty()) { %>
<tr>
<td colspan="5">검색된 회원정보가 없습니다.</td>
</tr>
<% } else { %>
<% for(MyHewon hewon:hewonList) { %>
<tr>
<td><%=hewon.getId() %></td>
<td><%=hewon.getName() %></td>
<td><%=hewon.getPhone() %></td>
<td><%=hewon.getEmail() %></td>
<td><%=hewon.getState() %></td>
</tr>
<% } %>
<% } %>
</table>
<br>
<form method="post">
아이디 : <input type="text" name="id">
<select name="choice">
<option value="or" selected="selected"> OR </option>
<option value="and"> AND </option>
</select>
이름 : <input type="text" name="name">
<button type="submit">검색</button>
</form>
</body>
</html>
<%@page import="xyz.itwill.dao.MyHewonDAO"%>
<%@page import="xyz.itwill.dto.MyHewon"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
//MYHEWON 테이블에서 아이디가 [xxx]인 회원의 이름을 [로빈훗]으로 변경
//기본생성자에 의해 생성된 객체 필드에는 기본값(논리형:false,숫자형:0,참조형:null) 저장
MyHewon hewon=new MyHewon();
hewon.setId("xxx");
hewon.setName("로빈훗");
//DAO 클래스의 메소드 매개변수에는 아이디와 이름만 저장된 회원정보가 전달
// => 아이디와 이름을 제외한 필드에는 기본값이 저장되어 전달
//문제점)MYHEWON 테이블에 저장된 회원정보가 비정상적으로 변경 처리
MyHewonDAO.getDAO().updateHewon(hewon);
*/
//해결법)DAO 클래스의 메소드 매개변수에 모든 회원정보를 저장하여 전달
// => 회원정보를 변경하지 않는 컬럼에는 기존 컬럼값이 저장되도록 필드값 변경
MyHewon hewon=new MyHewon();
hewon.setId("xxx");
hewon.setName("로빈훗");
hewon.setPhone("010-5467-3487");
hewon.setEmail("xxx@itwill.xyz");
hewon.setState(4);
MyHewonDAO.getDAO().updateHewon(hewon);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MYBATIS</title>
</head>
<body>
<h1>회원정보변경</h1>
<hr>
<h3>회원정보를 성공적으로 변경 하였습니다.</h3>
</body>
</html>
<%@page import="xyz.itwill.dao.MyHewonDAO"%>
<%@page import="xyz.itwill.dto.MyHewon"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//MYHEWON 테이블에서 아이디가 [xxx]인 회원의 이름을 [홍경래]으로 변경
MyHewon hewon=new MyHewon();
hewon.setId("xxx");
hewon.setName("홍경래");
MyHewonDAO.getDAO().updateDynamicHewon(hewon);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MYBATIS</title>
</head>
<body>
<h1>회원정보변경</h1>
<hr>
<h3>회원정보를 성공적으로 변경 하였습니다.</h3>
</body>
</html>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="xyz.itwill.dao.MyHewonDAO"%>
<%@page import="xyz.itwill.dto.MyHewon"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String ids=request.getParameter("ids");
List<String> idList=null;
if(ids!=null && !ids.equals("")) {//전달받은 아이디 목록이 있는 경우
//전달받은 아이디 목록을 [,] 기호로 분리하여 List 객체의 요소값으로 추가하여 저장
idList=new ArrayList<String>();
for(String id:ids.split(",")) {
idList.add(id.trim());
}
}
List<MyHewon> hewonList=MyHewonDAO.getDAO().selectMultiDynamicHewonList(idList);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MYBATIS</title>
<style type="text/css">
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
text-align: center;
padding: 3px;
}
.id { width: 150px; }
.name { width: 150px; }
.phone { width: 200px; }
.email { width: 200px; }
.state { width: 100px; }
</style>
</head>
<body>
<h1>회원목록</h1>
<hr>
<table>
<tr>
<td class="id">아이디</td>
<td class="name">이름</td>
<td class="phone">전화번호</td>
<td class="email">이메일</td>
<td class="state">공개범위</td>
</tr>
<% if(hewonList.isEmpty()) { %>
<tr>
<td colspan="5">검색된 회원정보가 없습니다.</td>
</tr>
<% } else { %>
<% for(MyHewon hewon:hewonList) { %>
<tr>
<td><%=hewon.getId() %></td>
<td><%=hewon.getName() %></td>
<td><%=hewon.getPhone() %></td>
<td><%=hewon.getEmail() %></td>
<td><%=hewon.getState() %></td>
</tr>
<% } %>
<% } %>
</table>
<br>
<form method="post">
아이디 : <input type="text" name="ids">
<button type="submit">검색</button>
<b>[검색하고자 하는 아이디가 여러개인 경우 ,로 구분하여 입력해 주세요.]</b>
</form>
</body>
</html>