티스토리 뷰
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> <!-- ~보다 작다(<) , ~보다 크다(>) -->
</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 |
댓글