본문 바로가기

java,jsp,spring/Spring

Spring MyBatis로 전환

첫번째로 할 일 : pom.xml, servlet-context.xml 수정

게시판

1. Controller

package com.javalec.spring_mvc_board_mybatis.controller;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.session.SqlSession;
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 com.javalec.spring_mvc_board_mybatis.dao.IBDao;

@Controller
public class BController {
	@Autowired
	private SqlSession sqlSession;
	
	@RequestMapping("/list")
	public String list(Model model) {
		System.out.println("=======> list()");
		
		IBDao dao = sqlSession.getMapper(IBDao.class);
		model.addAttribute("list", dao.list());

		return "list";
	}
	@RequestMapping("/write_view") public String write_view() {
		System.out.println("=======> write_view()"); 
		return "write_view"; 
	}
	
	@RequestMapping("/write") 
	public String write(HttpServletRequest request) { 
		System.out.println("=======> write()");
	 

		IBDao dao = sqlSession.getMapper(IBDao.class);
		dao.write(request.getParameter("bName")
				, request.getParameter("bTitle")
				, request.getParameter("bContent"));
		
		return "redirect:list"; 
	}
	 
	@RequestMapping("/content_view") public String
	content_view(HttpServletRequest request, Model model) {
		System.out.println("=======> content_view()");
	  
		IBDao dao = sqlSession.getMapper(IBDao.class);
		dao.upHit(request.getParameter("bId")); // 조회수 올리는 메소드를 먼저 실행해야 내용을 볼 때 조회수가 올라 있음
		model.addAttribute("content_view", dao.contentView(request.getParameter("bId")));
		return "content_view"; 
	}
	  
	@RequestMapping("/modify") 
	public String modify(HttpServletRequest request) { 
		System.out.println("=======> modify()");
	
		IBDao dao = sqlSession.getMapper(IBDao.class);
		// xml의 param 순서와 일치 시켜야함.
		dao.modify(request.getParameter("bName")
				, request.getParameter("bTitle")
				, request.getParameter("bContent")
				, request.getParameter("bId"));
		
		return "redirect:list"; 
	}
	  
	@RequestMapping("/delete") 
	public String delete(HttpServletRequest request) { 
		System.out.println("=======> delete()");
		
		IBDao dao = sqlSession.getMapper(IBDao.class);
		dao.delete(request.getParameter("bId"));
	 
		return "redirect:list"; 
	}
}

2. Dao

public interface IBDao {
	public ArrayList<BDto> list();
	public void write(String bName, String bTitle, String bContent);
	public BDto contentView (String strId);
	public void upHit(String strId);
	public void modify(String bName, String bTitle, String bContent, String bId);
	public void delete(String strId);
}

3. XML

<?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="com.javalec.spring_mvc_board_mybatis.dao.IBDao">
    
    <select id="list" resultType="com.javalec.spring_mvc_board_mybatis.dto.BDto">
        SELECT BID, BNAME, BTITLE, BCONTENT, BDATE, BHIT FROM MVC_BOARD
    </select>

	<insert id="write">
        INSERT INTO MVC_BOARD(BID,BNAME,BTITLE,BCONTENT,BHIT) VALUES(MVC_BOARD_SEQ.NEXTVAL,#{param1},#{param2},#{param3},0)
    </insert>
    
    <select id="contentView" resultType="com.javalec.spring_mvc_board_mybatis.dto.BDto">
        SELECT BID, BNAME, BTITLE, BCONTENT, BDATE, BHIT FROM MVC_BOARD WHERE BID = #{param1}
    </select>
    
	<update id="upHit">
        UPDATE MVC_BOARD SET BHIT = BHIT+1 WHERE BID = #{param1}
    </update>
    
	<update id="modify">
        UPDATE MVC_BOARD SET BNAME = #{param1}, BTITLE = #{param2}, BCONTENT = #{param3} WHERE BID = #{param4}
    </update>
    
	<delete id="delete">
        DELETE FROM MVC_BOARD WHERE BID = #{param1}
    </delete>
</mapper>

4. Dto

public class BDto {
	private int bId;
	private String bName;
	private String bTitle;
	private String bContent;
	private Timestamp bDate;
	private int bHit;
	
	public BDto() {	}
	
	public BDto(int bId, String bName, String bTitle, String bContent, Timestamp bDate, int bHit) {
		this.bId = bId;
		this.bName = bName;
		this.bTitle = bTitle;
		this.bContent = bContent;
		this.bDate = bDate;
		this.bHit = bHit;
	}

	public int getbId() {
		return bId;
	}
	public void setbId(int bId) {
		this.bId = bId;
	}
	public String getbName() {
		return bName;
	}
	public void setbName(String bName) {
		this.bName = bName;
	}
	public String getbTitle() {
		return bTitle;
	}
	public void setbTitle(String bTitle) {
		this.bTitle = bTitle;
	}
	public String getbContent() {
		return bContent;
	}
	public void setbContent(String bContent) {
		this.bContent = bContent;
	}
	public Timestamp getbDate() {
		return bDate;
	}
	public void setbDate(Timestamp bDate) {
		this.bDate = bDate;
	}
	public int getbHit() {
		return bHit;
	}
	public void setbHit(int bHit) {
		this.bHit = bHit;
	}
}

5. jsp는 동일

 

로그인, 회원가입

1. Controller

package com.javalec.spring_test_member_mybatis.controller;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.javalec.spring_test_member_mybatis.dao.MemDao;
import com.javalec.spring_test_member_mybatis.dto.MemDto;

@Controller
public class Memcontroller {
	
	@Autowired
	private SqlSession sqlSession;
	
	@RequestMapping("/login")
	public String login() {
		System.out.println("=======> login()");
		return "login";
	}
	@RequestMapping("/login_yn")
	public String login_yn(HttpServletRequest request) {
		System.out.println("=======> login_yn()");
		
		MemDao dao = sqlSession.getMapper(MemDao.class);
		ArrayList<MemDto> dto = dao.login(request.getParameter("mem_uid"));
        
		if (dto.isEmpty()) {
			return "redirect:login"; // 아이디가 없는 경우 error 창이 나오지 않고 login으로 이동 시키기 위함
		} else {
			if (dto.get(0).getMem_pwd().equals(request.getParameter("mem_pwd"))) {
				return "redirect:login_ok";
			} else {
				return "redirect:login";
			}
		}
	}
	@RequestMapping("/login_ok")
	public String login_ok() {
		System.out.println("=======> login_ok()");
		return "login_ok";
	}
	@RequestMapping("/register")
	public String register() {
		System.out.println("=======> register()");
		return "register";
	}
	@RequestMapping("/register_ok")
	public String register_ok(HttpServletRequest request) {
		System.out.println("=======> register_ok()");
		
		MemDao dao = sqlSession.getMapper(MemDao.class);
		dao.register(request.getParameter("mem_uid")
				, request.getParameter("mem_pwd")
				, request.getParameter("mem_pwd"));
		
		return "redirect:login";
	}
}

2. Dao

public interface MemDao {
	public ArrayList<MemDto> login(String mem_uid);
	public void register(String mem_uid, String mem_pwd, String mem_name);
}

3. XML

<?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="com.javalec.spring_test_member_mybatis.dao.MemDao">
    
    <select id="login" resultType="com.javalec.spring_test_member_mybatis.dto.MemDto">
        SELECT MEM_PWD FROM MVC_MEMBER WHERE MEM_UID = #{param1}
    </select>

	<insert id="register">
        INSERT INTO MVC_MEMBER VALUES(#{param1},#{param2},#{param3})
    </insert>
    
</mapper>

4. Dto

package com.javalec.spring_test_member_mybatis.dto;

public class MemDto {
	private String mem_uid;
	private String mem_pwd;
	private String mem_name;
	public String getMem_uid() {
		return mem_uid;
	}
	public void setMem_uid(String mem_uid) {
		this.mem_uid = mem_uid;
	}
	public String getMem_pwd() {
		return mem_pwd;
	}
	public void setMem_pwd(String mem_pwd) {
		this.mem_pwd = mem_pwd;
	}
	public String getMem_name() {
		return mem_name;
	}
	public void setMem_name(String mem_name) {
		this.mem_name = mem_name;
	}
	public MemDto(String mem_uid, String mem_pwd, String mem_name) {
		this.mem_uid = mem_uid;
		this.mem_pwd = mem_pwd;
		this.mem_name = mem_name;
	}
	public MemDto() {
	}
}

'java,jsp,spring > Spring' 카테고리의 다른 글

Spring 트랜잭션  (0) 2022.10.19
Spring 프레임워크 표준형  (0) 2022.10.17
MyBatis  (0) 2022.10.14
Spring Jdbc Template  (0) 2022.10.14
Spring 로그인 페이지 설계  (0) 2022.10.14