2022.10.14 Spring

sofia·2022년 11월 16일
0

Spring

목록 보기
9/11
post-thumbnail

Char 17. Mybatis




pom.xml에

**<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>
		
		     
		 <!-- JDBC Template -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.1.4.RELEASE</version>
		</dependency>**

예제 1

pom.xml

<!-- JDBC Template -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.1.4.RELEASE</version>
		</dependency>

		<!-- mybatis-->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
		
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>

servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.javalec.spring_mvc_board_mybatis" />
	
	<!-- 추가된 부분 -->

	<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
		<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></beans:property>
		<beans:property name="username" value="scott"></beans:property>
		<beans:property name="password" value="tiger"></beans:property>
	</beans:bean>	
	
	<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<beans:property name="dataSource" ref="dataSource"></beans:property>
		<beans:property name="mapperLocations" value="classpath:com/javalec/spring_mvc_board_mybatis/dao/mapper/*.xml"></beans:property>
	</beans:bean>
	
	<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
	</beans:bean>

	<!-- 추가된 부분 끝 -->
</beans:beans>

BDto.java

package com.javalec.spring_mvc_board_mybatis.dto;

import java.sql.Timestamp;

public class BDto {
	int bId;
	String bName;
	String bTitle;
	String bContent;
	Timestamp bDate;
	int bHit;
	
	public BDto() {
		// TODO Auto-generated constructor stub
	}
	
	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;
	}
	
}

IBDao.java

package com.javalec.spring_mvc_board_mybatis.dao;

import java.util.ArrayList;

import com.javalec.spring_mvc_board_mybatis.dto.*;

public interface IBDao {
	//IBDao.xml파일의 id는 메소드명 ! 
	//예로 들면 list, write, contentView, modify... 
	
	public ArrayList<BDto> list();
	
	public void write(String bName, String bTitle, String bContent);
	
	public BDto contentView(String strID);
	
	public void modify(String bId, String bName, String bTitle, String bContent);
	
	public void delete(String strID);
	
}

IBDao.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">

	<!--IBDao.java의 -->

	<!-- ArrayList<BDto> list -->
    <select id="list" resultType="com.javalec.spring_mvc_board_mybatis.dto.BDto">
        select bId, bName, bTitle, bContent, bDate, bHit from MVC_BOARD
    </select>

	<!-- write부분  -->
	<insert id="write">
		insert into MVC_BOARD(bId, bName, bTitle, bContent, bHit) 
			   values(MVC_BOARD_SEQ.NEXTVAL,#{param1},#{param2},#{param3},0)
    </insert>
    
    
   <!-- contentView -->
    <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>
    
    
    <!-- modify부분  -->
	<update id="modify">
		update MVC_BOARD set bName = #{param2}, bTitle = #{param3}, bContent = #{param4}
		 where bId=#{param1}
    </update>
    
	<!-- 아래도 됨!
	<insert id="modify">
		update MVC_BOARD set bName = #{param2}, bTitle = #{param3}, bContent = #{param4}
		 where bId=#{param1}
    </insert>  
    -->
    

	<!-- delete부분  -->
	<delete id="delete">
		delete from MVC_BOARD where bId=#{param1}
    </delete>
    
</mapper>

BController.java

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.jdbc.core.JdbcTemplate;
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;

//import com.javalec.spring_mvc_board_jdbc.service.BContentService;
//import com.javalec.spring_mvc_board_jdbc.service.BDeleteService;
//import com.javalec.spring_mvc_board.command.BCommand;
//import com.javalec.spring_mvc_board.command.BContentCommand;
//import com.javalec.spring_mvc_board.command.BDeleteCommand;
//import com.javalec.spring_mvc_board.command.BListCommand;
//import com.javalec.spring_mvc_board.command.BModifyCommand;
//import com.javalec.spring_mvc_board.command.BWriteCommand;
//import com.javalec.spring_mvc_board_jdbc.service.BListService;
//import com.javalec.spring_mvc_board_jdbc.service.BModifyService;
//import com.javalec.spring_mvc_board_jdbc.service.BService;
//import com.javalec.spring_mvc_board_jdbc.service.BWriteService;
//import com.javalec.spring_mvc_board_jdbc.util.Constant;

@Controller
public class BController {
//	BService service;
//	public JdbcTemplate template;
//	
//	@Autowired
//	public void setTemplate(JdbcTemplate template) {
//		this.template = template;
//		Constant.template = this.template;
//	}
	@Autowired
	private SqlSession sqlSession;

	@RequestMapping("/list")
	public String list(Model model) {
		System.out.println("@@@### list()");
		
//		service = new BListService();
//		service.execute(model);
		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, Model model) {
		System.out.println("@@@### write()");
		
		IBDao dao = sqlSession.getMapper(IBDao.class);
		dao.write(request.getParameter("bName")
				, request.getParameter("bTitle")
				, request.getParameter("bContent"));
		//여기서 write는 IBDao.java의 write메소드에 해당됨
		
//		model.addAttribute("request", request);
//		service = new BWriteService();
//		service.execute(model);
		
		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);
		model.addAttribute("content_view",dao.contentView(request.getParameter("bId")));
		
//		model.addAttribute("request", request);
//		service = new BContentService();
//		service.execute(model);
		
		return "content_view";
	}
//	
	@RequestMapping("/modify")
	public String modify(HttpServletRequest request, Model model) {
		System.out.println("@@@### modify()");
		
//		model.addAttribute("request", request);
//		service = new BModifyService();
//		service.execute(model);
		
		IBDao dao = sqlSession.getMapper(IBDao.class);
		dao.modify(request.getParameter("bId")
				 , request.getParameter("bName")
				 , request.getParameter("bTitle")
				 , request.getParameter("bContent"));
		
		return "redirect:list";
	}
	
	@RequestMapping("/delete")
	public String delete(HttpServletRequest request, Model model) {
		System.out.println("@@@### delete()");
		
//		model.addAttribute("request", request);
//		service = new BDeleteService();
//		service.execute(model);
		
		IBDao dao = sqlSession.getMapper(IBDao.class);
		dao.delete(request.getParameter("bId"));
		
		return "redirect:list";
	}
	
}

나머지 content.view.jsp와 listh.jsp, write_view.jsp는 전과 동일한 파일


예제 2

servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.javalec.spring_test_member_mybatis" />
		
	<!-- 추가된 부분 -->

	<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
		<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></beans:property>
		<beans:property name="username" value="scott"></beans:property>
		<beans:property name="password" value="tiger"></beans:property>
	</beans:bean>	
	
	<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<beans:property name="dataSource" ref="dataSource"></beans:property>
		<beans:property name="mapperLocations" value="classpath:com/javalec/spring_test_member_mybatis/dao/mapper/*.xml"></beans:property>
	</beans:bean>
	
	<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
	</beans:bean>

	<!-- 추가된 부분 끝 -->
	
	
	
</beans:beans>

MemDto.java

package com.javalec.spring_test_member_mybatis.dto;

public class MemDto {
	String mem_uid;
	String mem_pwd;
	String mem_name;
	
	
	public MemDto(String mem_uid, String mem_pwd, String mem_name) {
		super();
		this.mem_uid = mem_uid;
		this.mem_pwd = mem_pwd;
		this.mem_name = 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() {
		
	}
	
	
}

MemDao.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="loginYn"  resultType="com.javalec.spring_test_member_mybatis.dto.MemDto">
   		select mem_pwd from MVC_MEMBER where mem_uid=#{param1}
    </select >
    
	<insert id="write">
    	insert into MVC_MEMBER(mem_uid, mem_pwd, mem_name) values(#{param1}, #{param2}, #{param3})
    </insert>
</mapper>

MemDao .java

package com.javalec.spring_test_member_mybatis.dao;

import java.util.ArrayList;

import com.javalec.spring_test_member_mybatis.dto.MemDto;

public interface MemDao {

	public ArrayList<MemDto> loginYn( String id, String pw);
	
	public void write(String mem_uid, String mem_pwd, String mem_name);
}

MemController.java

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.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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;

//import com.javalec.spring_test_member_jdbc.util.Constant;
//import com.javalec.spring_test_member_jdbc.service.*;

@Controller
public class MemController {
//	MemService service;
//	public JdbcTemplate template;
//	
//	@Autowired
//	public void setTemplate(JdbcTemplate template) {
//		//메소드의 매개변수인 template는 servlet-context.xml의  name의 template
//		this.template = template;
//		Constant.template = this.template;
//	}
	@Autowired
	private SqlSession sqlSession;
	
	
	@RequestMapping("/login")
	public String login() {
		System.out.println("###@@@ login()");
		
		return "login";
	}
	
	@RequestMapping("/login_yn")
	public String login_yn(HttpServletRequest request, Model model) {
		System.out.println("###@@@ login_yn()");
		
		//강사님 방법
		MemDao dao = sqlSession.getMapper(MemDao.class);
		ArrayList<MemDto> dtos = dao.loginYn(request.getParameter("mem_uid"), request.getParameter("mem_pwd"));
		
		if (dtos.isEmpty()) {
			return "redirect:login";
		}else {
			if (request.getParameter("mem_pwd").equals(dtos.get(0).getMem_pwd())) {
				return "redirect:login_ok";
			}else {
				return "redirect:login";
			}
		}
		
		//내 방법
//		MemDao dao = sqlSession.getMapper(MemDao.class);
//		ArrayList<MemDto> dtos = dao.loginYn(request.getParameter("mem_uid"), request.getParameter("mem_pwd"));
//		
//		int result;
//		
//		if (dtos.isEmpty()) {
//			result=-1;
//		}else {
//			if (request.getParameter("mem_pwd").equals(dtos.get(0).getMem_pwd())) {
//				result = 1;
//			}else {
//				result =0;
//			}
//		}
//		
//		//분기처리
//		if (result == 1) {
//			return "redirect:login_ok";//로그인 성공시 이동
//		}
//		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("/registerOk")
	public String registerOk(HttpServletRequest request, Model model) {// 값을 받기위해 파라미터 넣음
		System.out.println("###@@@ registerOk");

		MemDao dao = sqlSession.getMapper(MemDao.class);
		dao.write(request.getParameter("mem_uid")
				, request.getParameter("mem_pwd") 
				, request.getParameter("mem_name"));
		
		
		return "redirect:login";
	}
//		
	
}

.jsp 파일은 동일하다.


표준형 제작

HomeController.java

package com.javalec.spring_mvc_board_std;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
//		return "home";
		return "redirect:list";
		//바로 list로 이동
	}
	
}

BController.java

package com.javalec.spring_mvc_board_std.controller;

import java.util.ArrayList;
import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

//import com.javalec.spring_mvc_board_mybatis.dao.IBDao;
import com.javalec.spring_mvc_board_std.dto.BDto;
import com.javalec.spring_mvc_board_std.service.BService;

@Controller
public class BController {
	
//	@Autowired
//	private SqlSession sqlSession;

	
	@Autowired
	private BService service;
	
	
	@RequestMapping("/list")
	public String list(Model model) {
		
		System.out.println("@@@### BController.list() start");
		
		
//		IBDao dao = sqlSession.getMapper(IBDao.class);
//		model.addAttribute("list", dao.list());
		ArrayList<BDto> list = service.list();
		model.addAttribute("list", list);
		//"list"의 결과값을 ArrayList<BDto> list에 넣음
		
		System.out.println("@@@### BController.list() end");
		return "list";
	}
	
	@RequestMapping("/write_view")
	public String write_view() {
		System.out.println("@@@### write_view()");
		
		return "write_view";
	}
	
	@RequestMapping("/write")
//	public String write(HttpServletRequest request, Model model) {
	public String write(@RequestParam HashMap<String,String> param) {
		System.out.println("@@@### BController.write() start");
		
//		IBDao dao = sqlSession.getMapper(IBDao.class);
//		dao.write(request.getParameter("bName")
//				, request.getParameter("bTitle")
//				, request.getParameter("bContent"));
		
		service.write(param);//매개변수 param만 넣기
		
		System.out.println("@@@### BController.write() end");
		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);
//		model.addAttribute("content_view",dao.contentView(request.getParameter("bId")));
//		return "content_view";
//	}
////	
//	@RequestMapping("/modify")
//	public String modify(HttpServletRequest request, Model model) {
//		System.out.println("@@@### modify()");
//		
//		
//		IBDao dao = sqlSession.getMapper(IBDao.class);
//		dao.modify(request.getParameter("bId")
//				 , request.getParameter("bName")
//				 , request.getParameter("bTitle")
//				 , request.getParameter("bContent"));
//		
//		return "redirect:list";
//	}
//	
//	@RequestMapping("/delete")
//	public String delete(HttpServletRequest request, Model model) {
//		System.out.println("@@@### delete()");
//		
//		
//		IBDao dao = sqlSession.getMapper(IBDao.class);
//		dao.delete(request.getParameter("bId"));
//		
//		return "redirect:list";
//	}
//	
}

IBDao.java

package com.javalec.spring_mvc_board_std.dao;

import java.util.ArrayList;
import java.util.HashMap;

import com.javalec.spring_mvc_board_std.dto.*;

public interface IBDao {
	//IBDao.xml파일의 id는 메소드명 ! 
	//예로 들면 list, write, contentView, modify... 
	
	public ArrayList<BDto> list();
	
//	public void write(String bName, String bTitle, String bContent);
	public void write(HashMap<String, String> param);
	// 매개변수가 String bName, String bTitle, String bContent뿐만이 아니라 다른 것들도 있는 경우
	// 넘어가는 데이터가 100개 막 이런경우에 사용함
	
//	
//	public BDto contentView(String strID);
//	
//	public void modify(String bId, String bName, String bTitle, String bContent);
//	
//	public void delete(String strID);
	
}

IBDao.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_std.dao.IBDao">

	<!--IBDao.java의 -->

	<!-- ArrayList<BDto> list -->
    <select id="list" resultType="com.javalec.spring_mvc_board_std.dto.BDto">
        select bId, bName, bTitle, bContent, bDate, bHit from MVC_BOARD
    </select>

	<!-- write부분  -->
	<!-- haspmap의 형태로 처리하기 위해서    parameterType="hashmap" 추가 -->
	<!-- 그리고 #{param}을 각 해당 name으로 바꾸면 됨 -->
	<insert id="write" parameterType="hashmap">
		insert into MVC_BOARD(bId, bName, bTitle, bContent, bHit) 
			   values(MVC_BOARD_SEQ.NEXTVAL,#{bName},#{bTitle},#{bContent},0)
    </insert>
    
</mapper>

BDto.java

package com.javalec.spring_mvc_board_std.dto;

import java.sql.Timestamp;

public class BDto {
	int bId;
	String bName;
	String bTitle;
	String bContent;
	Timestamp bDate;
	int bHit;
	
	public BDto() {
		// TODO Auto-generated constructor stub
	}
	
	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;
	}
	
}

BService.java

package com.javalec.spring_mvc_board_std.service;

import java.util.ArrayList;
import java.util.HashMap;

import org.springframework.ui.Model;

import com.javalec.spring_mvc_board_std.dto.BDto;

public interface BService {
	//public void execute(Model model); //선언
	
	public ArrayList<BDto> list();
	public void write(HashMap<String, String> param);
}

BController.java

package com.javalec.spring_mvc_board_std.service;

import java.util.ArrayList;
import java.util.HashMap;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;

import com.javalec.spring_mvc_board_std.dao.*;
import com.javalec.spring_mvc_board_std.dto.BDto;

//인터페이스 구현
@Service("BService")
public class BServiceImpl implements BService{

	
	@Autowired
	private SqlSession sqlSession;
	
	//글 목록 보는 페이지
	@Override
	public ArrayList<BDto> list() {
		//데이터 흐름 확인용 로그
		System.out.println("@@@### BServiceImpl.list() start");

		IBDao dao = sqlSession.getMapper(IBDao.class);
		//model.addAttribute("list", dao.list());
		ArrayList<BDto> list = dao.list();
		//IBDao의 list
		
		//데이터 흐름 확인용 로그
		System.out.println("@@@### BServiceImpl.list() end");
		
//		return "list";
		return list;
	}

	// 글쓰기 
	@Override
	public void write(HashMap<String, String> param) {
		System.out.println("@@@### BServiceImpl.write() start");
		
		//dao단 호출
		IBDao dao = sqlSession.getMapper(IBDao.class);
//		dao.write(request.getParameter("bName")
//				, request.getParameter("bTitle")
//				, request.getParameter("bContent"));
		
		dao.write(param);//그냥 매개변수 param으로 넘기기
		
		
		
		System.out.println("@@@### BServiceImpl.write() end");
		
	}
	
}

Servlet-content.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.javalec.spring_mvc_board_std" />
	
	
	<!-- 추가된 부분 -->

	<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
		<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></beans:property>
		<beans:property name="username" value="scott"></beans:property>
		<beans:property name="password" value="tiger"></beans:property>
	</beans:bean>	
	
	<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<beans:property name="dataSource" ref="dataSource"></beans:property>
		<beans:property name="mapperLocations" value="classpath:com/javalec/spring_mvc_board_std/dao/mapper/*.xml"></beans:property>
	</beans:bean>
	
	<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
	</beans:bean>

	<!-- 추가된 부분 끝 -->
	
</beans:beans>

pom.xml

<!-- JDBC Template -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.1.4.RELEASE</version>
		</dependency>

		<!-- mybatis-->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
		
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>

list.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<table width="500" border="1">
		<tr>
			<td>번호</td>
			<td>이름</td>
			<td>제목</td>
			<td>날짜</td>
			<td>히트</td>
		</tr>
		<c:forEach items="${list}" var="dto">
			<tr>
				<td>${dto.bId}</td>
				<td>${dto.bName}</td>
				<td>
					<a href="content_view?bId=${dto.bId}">${dto.bTitle}</a>
				</td>
				<td>${dto.bDate}</td>
				<td>${dto.bHit}</td>
			</tr>
		</c:forEach>
		<tr>
			<td colspan="5">
				<a href="write_view">글작성</a>
			</td>
		</tr>
	</table>
</body>
</html>

write.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<table width="500" border="1">
		<form method="post" action="write"><!-- BController에서 write로 호출 해야함 -->
			<tr>
				<td>이름</td>
				<td>
					<input type="text" name="bName" size="50">
				</td>
			</tr>
			<tr>
				<td>제목</td>
				<td>
					<input type="text" name="bTitle" size="50">
				</td>
			</tr>
			<tr>
				<td>내용</td>
				<td>
					<textarea rows="10" name="bContent"></textarea>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="입력">
				</td>
			</tr>
		</form>
	</table>
</body>
</html>

-- 다음시간에 이어서

0개의 댓글