MyBatis 사용 간한한 방명록 예제

jdbc, MVC 모델 사용 예제와 비교해 보면 상당히 간단해 졌다. 





(1) main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<a href="write.html">글등록</a><br/>

<a href="board.do?cmd=list">글목록</a><br/>

</body>

</html>


(2) write.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<form method="post" action="board.do?cmd=write">

작성자<input type="text" name="writer"/><br/>

이메일<input type="text" name="email"/><br/>

제목<input type="text" name="title"/><br/>

내용<br/>

<textarea rows="5" cols="50" name="content"></textarea><br/>

<input type="submit" value="등록"/>

</form>

</body>

</html>



(3) 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<h1>방명록</h1>

<table border="1" width="600">

<tr>

<th>글번호</th>

<th>작성자</th>

<th>이메일</th>

<th>제목</th>

<th>작성일</th>

<th colspan="2"></th>

</tr>

<c:forEach var="vo" items="${list }">

<tr>

<td>${vo.num }</td>

<td>${vo.writer }</td>

<td>${vo.email }</td>

<td>${vo.title }</td>

<td>${vo.w_date }</td>

<td><a href="javascript:location.href='board.do?cmd=detail&num=${ vo.num }'">상세보기</a></td>

<td><a href="javascript:location.href='board.do?cmd=delete&num=${ vo.num }'">글삭제</a></td>

</tr>

</c:forEach>

</table>

<a href="write.html"><input type="button" value="입력"></a> 

</body>

</html>


(4) detail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<form method="post" action="board.do?cmd=update">

번호 <input type="text" name="num" value="${ vo.num }" disabled />

<input type="hidden" name="num" value="${ vo.num }" />

<br/>

작성자<input type="text" name="writer" value="${ vo.writer }"/><br/>

이메일<input type="text" name="email" value="${ vo.email }"/><br/>

제목<input type="text" name="title" value="${ vo.title }"/><br/>

내용<br/>

<textarea rows="5" cols="50" name="content">${ vo.content }</textarea><br/>

<input type="submit" name="btnupdate" value="수정"/>

<input type="button" name="btnlist" value="목록" onclick="javascript:location.href='board.do?cmd=list'"/>

</form>

</body>

</html>


(5) SqlSessionFactoryService.java

package test.orm;


import java.io.IOException;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class SqlSessionFactoryService {

private static SqlSessionFactory sqlSessionFactory;

static{

try{

InputStream is = Resources.getResourceAsStream("test/orm/mybatis-config.xml");

sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);

}catch(IOException ie){

System.out.println(ie.getMessage());

}

}


public static SqlSessionFactory getSqlSessionFactory() {

return sqlSessionFactory;

}

}


(6)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>

<typeAliases>

<typeAlias type="test.vo.BoardVo" alias="board" />

<!--  <typeAlias type="java.lang.Integer" alias="int"/> -->

</typeAliases>

<environments default="development">

<environment id="development">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<property name="driver" value="oracle.jdbc.OracleDriver" />

<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />

<property name="username" value="scott" />

<property name="password" value="tiger" />

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="test/orm/BoardMapper.xml" />

</mappers>

</configuration>



(7) BoardMapper.xml

<?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="test.orm.BoardMapper">

<insert id="add" parameterType="board">

insert into board values(board_seq.nextval,#{writer},#{email},#{title},#{content},sysdate)

</insert>

<delete id="delete" parameterType="int">

delete from board where num=#{num}

</delete>

<update id="update" parameterType="board">

update board set writer=#{writer},email=#{email},title=#{title},content=#{content} where num=#{num}

</update>

<select id="getlist" resultType="board">

select * from board order by num desc

</select>

<select id="find" parameterType="int" resultType="board">

select * from board where num=#{num}

</select>

</mapper>



(8)BoardController.java

package test.controller;


import java.io.IOException;

import java.util.List;

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 test.dao.BoardDao;

import test.vo.BoardVo;

@WebServlet("/board.do")

public class BoardController extends HttpServlet {

@Override

protected void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

String cmd = request.getParameter("cmd");

if(cmd.equals("write")){

write(request, response);

}else if(cmd.equals("list")){

list(request, response);

}else if(cmd.equals("delete")){

delete(request, response);

}else if(cmd.equals("update")){

update(request, response);

}else if(cmd.equals("detail")){

detail(request, response);

}

}

public void delete(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String num=request.getParameter("num");

BoardDao dao=new BoardDao();

int n = dao.delete(Integer.parseInt(num));

if (n>0){

list(request, response);

}

}

public void update(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String num=request.getParameter("num");

String writer=request.getParameter("writer");

String email=request.getParameter("email");

String title=request.getParameter("title");

String content=request.getParameter("content");

BoardVo vo=new BoardVo(Integer.parseInt(num), writer, email, title, content,null);

BoardDao dao=new BoardDao();

int n = dao.update(vo);

if(n>0){

list(request, response);

}

}

public void detail(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String num=request.getParameter("num");

BoardDao dao=new BoardDao();

BoardVo vo = dao.deatil(Integer.parseInt(num));

if ( vo != null){

request.setAttribute("vo", vo);

request.getRequestDispatcher("/detail.jsp").forward(request, response);

}else{

response.sendRedirect("error.jsp");

}

}

public void write(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//전송된 데이터를 얻어오기

String writer=request.getParameter("writer");

String email=request.getParameter("email");

String title=request.getParameter("title");

String content=request.getParameter("content");

BoardVo vo=new BoardVo(0, writer, email, title, content,null);

//데이터를 db에 저장하기

BoardDao dao=new BoardDao();

int n=dao.insert(vo);


//뷰페이지로 이동하기

if(n>0){

response.sendRedirect("board.do?cmd=list");

}else{

response.sendRedirect("error.jsp");

}

}

public void list(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

BoardDao dao = new BoardDao();

List<BoardVo> list = dao.getList();

if(list != null){

request.setAttribute("list", list);

request.getRequestDispatcher("/list.jsp").forward(request, response);

}else{

response.sendRedirect("error.jsp");

}

}

}




(9)BoardDao.java

package test.dao;


import java.util.List;


import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import test.orm.SqlSessionFactoryService;

import test.vo.BoardVo;


public class BoardDao {

private SqlSessionFactory sqlSessionFactory;


public BoardDao() {

sqlSessionFactory = SqlSessionFactoryService.getSqlSessionFactory();

}

public int delete(int num){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

int n = session.delete("delete", num);

session.commit();

return n;

} finally {

if (session != null)

session.close();

}

}

public int update(BoardVo vo){

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

int n = session.update("update", vo);

session.commit();

return n;

} finally {

if (session != null)

session.close();

}

}

public int insert(BoardVo vo) {

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

int n = session.insert("add", vo);

session.commit();

return n;

} finally {

if (session != null)

session.close();

}

}

public List<BoardVo> getList() {

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

return session.selectList("getlist");

} finally {

if (session != null)

session.close();

}

}

public BoardVo deatil(int num) {

SqlSession session = null;

try {

session = sqlSessionFactory.openSession();

BoardVo vo = session.selectOne("find",num);

return vo;

} finally {

if (session != null)

session.close();

}

}

}



(10) BoardVo.java

package test.vo;


import java.sql.Date;


public class BoardVo {

private int num;

private String writer;

private String email;

private String title;

private String content;

private Date w_date; 

public BoardVo(){}


public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public BoardVo(int num, String writer, String email, String title,

String content, Date w_date) {

super();

this.num = num;

this.writer = writer;

this.email = email;

this.title = title;

this.content = content;

this.w_date = w_date;

}

public String getWriter() {

return writer;

}

public void setWriter(String writer) {

this.writer = writer;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public Date getW_date() {

return w_date;

}

public void setW_date(Date w_date) {

this.w_date = w_date;

}

}




'WEB > MyBatis' 카테고리의 다른 글

dynamic query : 동적쿼리  (0) 2013.05.04
log4j.properties  (0) 2013.05.04
2. java 에서 mybatis 사용한 예제  (0) 2013.04.24
1. 라이브러리 다운 및 환경설정(xml)  (0) 2013.04.24

+ Recent posts