티스토리 뷰

JAVA

myBatis update ver/

장꾸꾸 2020. 11. 19. 11:41

 

WebContent

insert.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
$(document).ready(function(){
	$('#sbtn').click(function(){
		var d="eno="+$("#eno").val();
		
		$.ajax({
			type:"post",
			url:"searchno",
			data:d,
			dataType:"html",
			success:function(data){
				$("#display").html(data);
			}
		});			
	});
});
</script>
</head>
<body>
<a href="/list">전체보기</a>
<a href="/search">검색(사번 10이하,'업'이포함)</a>
<form action="/insert" method="post">
	<table>
		<tr>
			<td>이름</td>
			<td><input type="text" name="ename" /></td>
		</tr>
		<tr>
			<td>연락처</td>
			<td><input type="text" name="phone" /></td>
		</tr>
		<tr>
			<td>부서</td>
			<td><input type="text" name="dept" /></td>
		</tr>
		<tr>
			<td colspan="2" align="center"><input type="submit" value="등록" />
			</td>
		</tr>
	</table>
</form><br><br>

번호로 찾기: <input type="text" id="eno">
<input type="button" id="sbtn" value="찾기">
<br><br>
<div id="display"></div>
</body>
</html>

list.jsp

<%@ 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>
<h2>전체보기</h2>
<table border="1">
	<tr>
		<td>부서번호</td>
		<td>이름</td>
		<td>연락처</td>
		<td>부서명</td>
		<td>수정</td>
		<td>삭제</td>
	</tr>
	<c:if test="${!empty list}">
	<c:forEach items="${list}" var="ob">
			<tr>
				<td>${ob.eno}</td>
				<td>${ob.ename}</td>
				<td>${ob.phone}</td>
				<td>${ob.dept}</td>
				<td>
					<form action="updateEmp.jsp" method="post">
						<a href="javascript:;" onclick="parentNode.submit();">수정</a>
						<input type="hidden" name="eno" value="${ob.eno}"/>
						<input type="hidden" name="ename" value="${ob.dept}"/>
						<input type="hidden" name="phone" value="${ob.phone}"/>
						<input type="hidden" name="dept" value="${ob.dept}"/>
					</form>
				</td>
				<td>
					<a href="delete?eno=${ob.eno}" 
					         onclick="javascript:return confirm('삭제할까요?')">삭제</a>
				</td>
			</tr>
	</c:forEach>
	</c:if>
</table>
</body>
</html>

searchNo.jsp

<%@page import="entity.Emp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>searchNo.jsp</title>
</head>
<body>
${emp.eno}<br>
${emp.ename}<br>
${emp.phone}<br>
${emp.dept}<br>
</body>
</html>

table.sql

select * from tab;
select * from emp;

drop table emp;
drop sequence seq_eno;

create table emp(
eno number(6) primary key,
ename varchar2(20) not null,
phone varchar2(20),
dept varchar2(20));

create sequence seq_eno increment by 1 start with 1 nocycle nocache;

select * from emp;
delete from emp;
select * from emp where eno<=10 and dept like '%업%';

updateEmp.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<fmt:requestEncoding value="UTF-8"/>
<form action="/update"  method="post">
	<table border="1">
		<tr>
			<td>번호</td>
			<td><input type="text" name="eno" value="${param.eno}" readonly/></td>
		</tr>
		<tr>
			<td>이름</td>
			<td><input type="text" name="ename" value="${param.eno}" readonly/></td>
		</tr>
		<tr>
			<td>연락처</td>
			<td><input type="text" name="phone" value="${param.phone}" /></td>
		</tr>
		<tr>
			<td>부서</td>
			<td><input type="text" name="dept" value="${param.dept}" /></td>
		</tr>
		<tr>
			<td colspan="2" align="center">
				<input type="submit" value="수정" />
			</td>
		</tr>
	</table> 
</form>
</body>
</html>

 

package

controller

DeleteEmp.java

package controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.EmpDao;

@WebServlet(name = "Delete", urlPatterns = { "/delete" })
public class DeleteEmp extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		EmpDao dao=new EmpDao();
		int eno=Integer.parseInt(request.getParameter("eno"));
		int n=dao.deleteEmp(eno);
		
		if(n > 0 ) {
			response.sendRedirect("/list");
		}
	}
}

InsertEmp.java

package controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.EmpDao;
import entity.Emp;

@WebServlet(name = "Insert", urlPatterns = { "/insert" })
public class InsertEmp extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		
		Emp ob=new Emp();
		ob.setEname(request.getParameter("ename"));
		ob.setPhone(request.getParameter("phone"));
		ob.setDept(request.getParameter("dept"));
		
		EmpDao dao=new EmpDao();
		int n=dao.insertEmp(ob);
		
		if(n > 0) {
			//System.out.println("OK");
			response.sendRedirect("/list");
		}
	}
}

ListEmp.java

package controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.EmpDao;
import entity.Emp;

@WebServlet(name = "List", urlPatterns = { "/list" })
public class ListEmp extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		EmpDao dao=new EmpDao();
		List<Emp> list=dao.getList();
		
		if(list != null) {
			request.setAttribute("list", list);
			RequestDispatcher rd=request.getRequestDispatcher("list.jsp");
			rd.forward(request, response);
		}
	}
}

SearchEmp.java

package controller;

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

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.EmpDao;
import entity.Emp;

@WebServlet(name = "Search", urlPatterns = { "/search" })
public class SearchEmp extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//Map객체를  각각 필드의 key와 value를 저장
		Map<String, Object> map=new HashMap<>();
		map.put("eno",10);
		map.put("dept", "%" + "업" + "%" );   // "%업%"
		
		EmpDao dao=new EmpDao();
		List<Emp> list=dao.getEmpByEnoAndDept(map);
		
		if(list != null) {
			request.setAttribute("list", list);
			RequestDispatcher rd=request.getRequestDispatcher("list.jsp");
			rd.forward(request, response);
		}
	}
}

SearchNo.java

package controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.EmpDao;
import entity.Emp;

@WebServlet(name = "SearchNo", urlPatterns = { "/searchno" })
public class SearchNo extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int eno=Integer.parseInt(request.getParameter("eno"));
//		System.out.println("eno:" +  eno);
		
		EmpDao dao=new EmpDao();
		Emp entity=dao.searchNo(eno);
		
		
		if(entity != null) {
			request.setAttribute("emp", entity);
			RequestDispatcher rd=request.getRequestDispatcher("searchNo.jsp");
			rd.forward(request, response);
		}
	}
}

UpdateEmp.java

package controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.EmpDao;
import entity.Emp;

@WebServlet(name = "Update", urlPatterns = { "/update" })
public class UpdateEmp extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		
		Emp ob=new Emp();
		ob.setEno(Integer.parseInt(request.getParameter("eno")));
		ob.setPhone(request.getParameter("phone"));
		ob.setDept(request.getParameter("dept"));
		
		EmpDao dao=new EmpDao();
		int n=dao.updateEmp(ob);
		
		if(n > 0) {
			//System.out.println("OK");
			response.sendRedirect("/list");
		}
	}
}

 

dao

EmpDao.java

package dao;

import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import entity.Emp;

//DAO(Data Access Object):데이터베이스와 연동
public class EmpDao {
	private static SqlSessionFactory factory;
	
	static {
		try {
			String resource="mybatis/myBatis-config.xml";
			Reader reader=Resources.getResourceAsReader(resource);
			factory=new SqlSessionFactoryBuilder().build(reader);
			                         //default에 연결 (environment id="dev")
//			factory=new SqlSessionFactoryBuilder().build(reader, "env");
			                         // environment id="env"에 연결
		}catch(IOException e) {}
	}
	//----------------------------------------------------------------------
	public int insertEmp(Emp ob) {
		SqlSession session=factory.openSession();
		int n=0;
		
		try {				 //namespace: my.empMapper , id명:insertEmp								
			n=session.insert("my.empMapper.insertEmp",ob);
			session.commit();
		}catch(Exception e) {
			session.rollback();
		}finally {
			session.close();
		}
		return n;
	}
	//-----------------------------------------------------
	public List<Emp> getList() {
		SqlSession session=factory.openSession();
		List<Emp> list=session.selectList("my.empMapper.listEmp");
		session.close();
		return list;
	}
	//-----------------------------------------------------
	public int updateEmp(Emp ob) {
		SqlSession session=factory.openSession();
		int n=0;
		
		try {											
			n=session.insert("my.empMapper.updateEmp",ob);
			session.commit();
		}catch(Exception e) {
			session.rollback();
		}finally {
			session.close();
		}
		return n;
	}
	//-----------------------------------------------------
	public int deleteEmp(int eno) {
		SqlSession session=factory.openSession();
		int n=0;
		
		try {											
			n=session.insert("my.empMapper.deleteEmp",eno);
			session.commit();
		}catch(Exception e) {
			session.rollback();
		}finally {
			session.close();
		}
		return n;
	}
	//-----------------------------------------------------
	public Emp searchNo(int eno) {
		SqlSession session=factory.openSession();
		Emp entity=session.selectOne("my.empMapper.searchNo", eno);
		session.close();
		return entity;
	}
	//-----------------------------------------------------
	public List<Emp> getEmpByEnoAndDept(Map<String, Object> map) {
		SqlSession session=factory.openSession();
		List<Emp> list=session.selectList("my.empMapper.searchEmp", map);
		session.close();
		return list;
	}
}
/*
	insert: 추가
	update: 수정
	delete: 삭제
	select(=selectList): 여러건의 객체
	selectOne: 1건의 객체
*/

 

entity

Emp.java

package entity;

public class Emp {
	private int eno;
	private String ename;
	private String phone;
	private String dept;
	
	public Emp() {
		super();
	}
	public Emp(int eno, String ename, String phone, String dept) {
		super();
		this.eno = eno;
		this.ename = ename;
		this.phone = phone;
		this.dept = dept;
	}
	public int getEno() {
		return eno;
	}
	public void setEno(int eno) {
		this.eno = eno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getDept() {
		return dept;
	}
	public void setDept(String dept) {
		this.dept = dept;
	}
}

 

mybatis

config.property

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:XE
jdbc.username=edu
jdbc.password=1234

myBatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<properties resource="mybatis/config.property"/>
	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC"/><!-- JDBC:자동커밋/MANAGED:수동커밋 -->
			<dataSource type="POOLED"><!-- UNPOOLED:매번초기화하지않음/POOLED:매번 커넥션객체를 열고닫음 -->
				<property name="driver" 	value="${jdbc.driver}"/>
				<property name="url" 		value="${jdbc.url}"/>
				<property name="username" 	value="${jdbc.username}"/>
				<property name="password" 	value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="mybatis/sqlMapper.xml"/> <!-- SQL문장이 기술되는 Mapper파일 -->
	</mappers>
</configuration>

sqlMapper.sml

<?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="my.empMapper"> <!-- namespace:이름공간 -->
	<insert id="insertEmp" parameterType="entity.Emp">
		<![CDATA[
			INSERT INTO EMP(ENO, ENAME, PHONE,DEPT)
			VALUES(SEQ_ENO.NEXTVAL, #{ename}, #{phone}, #{dept})
		]]>
	</insert>

	<select id="listEmp" resultType="entity.Emp">
		<![CDATA[
			SELECT * FROM EMP
		]]>
	</select>

	<update id="updateEmp" parameterType="entity.Emp">
		<![CDATA[
			UPDATE EMP
			SET PHONE=#{phone}, DEPT=#{dept}
			WHERE ENO=#{eno}
		]]>
	</update>
	
	<delete id="deleteEmp" parameterType="java.lang.Integer">
		<![CDATA[
			DELETE
			FROM EMP
			WHERE ENO=#{eno}
		]]>
	</delete>
	
	<select id="searchNo" parameterType="java.lang.Integer" resultType="entity.Emp">
		<![CDATA[
			SELECT *
			FROM EMP
			WHERE ENO=#{eno}
		]]>	
	</select>
	
	<select id="searchEmp" parameterType="hashmap" resultType="entity.Emp">
		<![CDATA[
			SELECT *
			FROM EMP
			WHERE ENO <= #{eno} AND DEPT LIKE #{dept}
		]]>
	</select> <!-- ~보다 작다(&lt;) , ~보다 크다(&gt;) -->
</mapper>

 

'JAVA' 카테고리의 다른 글

DB파일올리기2_JSP  (0) 2020.11.20
DB에 파일올리기_JSP  (0) 2020.11.20
과제)myBatis  (0) 2020.11.19
myBatis _jstl로 바꾸기  (0) 2020.11.19
JSTL_ entity에서 가져오기  (0) 2020.11.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함