전자정부 프레임워크 값넘기기 연습 (10) MyBatis 테스트
1. com.test.mybatis 패키지에
StudentDAO.java 파일을 생성후 아래의 코드를 입력
package com.test.mybatis;
import java.util.ArrayList;
import java.util.HashMap;
public interface StudentDAO {
public int insertStudent(StudentModel stdmodel);
public ArrayList<StudentModel> selectStudent();
public ArrayList<StudentModel> selectStudentOrder();
public ArrayList<StudentModel> selectStudentWhere(String name);
public ArrayList<StudentModel> selectStudentOr( HashMap<String,Object> arg );
}
-------------------------------------------------------------------------------------------------------
2. com.test.mybatis 패키지에
StudentDAOImpl.java 파일을 생성후 아래의 코드를 입력
package com.test.mybatis;
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.Repository;
import java.util.ArrayList;
import java.util.HashMap;
@Repository
public class StudentDAOImpl implements StudentDAO {
@Autowired
SqlSession sqlSession;
@Override
public int insertStudent(StudentModel stdmodel) {
// TODO Auto-generated method stub
StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
int n = mapper.insertStudent(stdmodel);
return n;
}
@Override
public ArrayList<StudentModel> selectStudent()
{
StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
ArrayList<StudentModel> arr = mapper.selectStudent();
return arr;
}
@Override
public ArrayList<StudentModel> selectStudentOrder()
{
StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
ArrayList<StudentModel> arr = mapper.selectStudentOrder();
return arr;
}
@Override
public ArrayList<StudentModel> selectStudentWhere(String name)
{
StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
ArrayList<StudentModel> arr = mapper.selectStudentWhere(name);
return arr;
}
@Override
public ArrayList<StudentModel> selectStudentOr( HashMap<String,Object> arg )
{
StudentDAO mapper=sqlSession.getMapper(StudentDAO.class);
ArrayList<StudentModel> arr = mapper.selectStudentOr(arg);
return arr;
}
}
-------------------------------------------------------------------------------------
3. com.test.mybatis 패키지에
StudentModel.java 파일을 생성후 아래의 코드를 입력
package com.test.mybatis;
public class StudentModel {
String name;
int age;
String birth;
public StudentModel() {
name = "";
age = 0;
birth ="";
}
public StudentModel(String name, int age, String birth) {
super();
this.name = name;
this.age = age;
this.birth = birth;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
}
--------------------------------------------------------------------------------
4. com.test.mybatis 패키지에
StudentDAO.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="com.test.mybatis.StudentDAO">
<resultMap type="StudentModel" id="stdModel">
<result property="name" column="name" />
<result property="age" column="age" />
<result property="birth" column="birth" />
</resultMap>
<select id="selectStudent" resultMap="stdModel">
SELECT * FROM student
</select>
<select id="selectStudentOrder" resultMap="stdModel">
SELECT * FROM student order by name
</select>
<select id="selectStudentWhere" resultMap="stdModel" parameterType="String">
SELECT * FROM student where name= #{name}
</select>
<select id="selectStudentOr" resultMap="stdModel" parameterType="HashMap">
SELECT * FROM student where name= #{name} or age=#{age}
</select>
<insert id="insertStudent" parameterType="com.test.mybatis.StudentModel">
INSERT INTO STUDENT VALUES( #{name}, #{age},#{birth} )
</insert>
</mapper>
---------------------------------------------------------------------------------------------------
5. egovframework.example.sample.web 패키지 경로에
MyController.java 파일 생성후 아래 코드를 입력
package egovframework.example.sample.web;
import java.util.ArrayList;
import java.util.HashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.support.SessionStatus;
import com.test.mybatis.StudentDAOImpl;
import com.test.mybatis.StudentModel;
import egovframework.example.sample.service.SampleDefaultVO;
import egovframework.example.sample.service.SampleVO;
@Controller
public class MyController {
@Autowired
StudentDAOImpl daoImpl;
@RequestMapping(value = "/insert.do", method = RequestMethod.GET)
public String insert( Model model )throws Exception {
int n = daoImpl.insertStudent(new StudentModel("스프링",30,"2020-11-11"));
model.addAttribute("result",n+":inserted");
return "insertview";
}
@RequestMapping(value = "/select.do", method = RequestMethod.GET)
public String select( Model model )throws Exception {
ArrayList<StudentModel> arr = daoImpl.selectStudent();
model.addAttribute("stdArr",arr);
return "selectview";
}
@RequestMapping(value = "/selectw.do", method = RequestMethod.GET)
public String selectw( Model model )throws Exception {
ArrayList<StudentModel> arr = daoImpl.selectStudentWhere("홍길동");
model.addAttribute("stdArr",arr);
return "selectview";
}
@RequestMapping(value = "/selecto.do", method = RequestMethod.GET)
public String selecto( Model model )throws Exception {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("name","홍길동");
map.put("age", 20);
ArrayList<StudentModel> arr = daoImpl.selectStudentOr(map);
model.addAttribute("stdArr",arr);
return "selectview";
}
}
---------------------------------------------------------------------------------
6. pom.xml 파일에 아래의 코드 추가
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
---------------------------------------------------------------
7. webapp 경로에 test.html 파일 추가
아래의 코드 입력
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>hello</h1>
</body>
</html>
----------------------------------------------------------------
8. webapp - WEB-INF - jsp - egovframework - example 경로에
insertview.jsp 파일을 추가하고 아래의 코드를 입력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${result}</h1>
</body>
</html>
--------------------------------------------------------------------------
9. webapp - WEB-INF - jsp - egovframework - example 경로에
selectview.jsp 파일을 추가하고 아래의 코드를 입력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
<title>Insert title here</title>
</head>
<body>
<div class="container">
<table class="table table-striped">
<thead>
<tr><th>이름</th><th>나이</th><th>생일</th></tr>
</thead>
<tbody>
<!--<tr><td>이름1</td><td>나이1</td><td>생일1</td></tr>-->
<c:forEach var="s" items="${stdArr}">
<tr><td>${s.name}</td><td>${s.age}</td><td>${s.birth}</td></tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
----------------------------------------------------------------------------------------
10. webapp - WEB-INF - config - egovframework - springmvc 경로에
dispatcher-servlet.xml 파일에 다음코드를 추가 해준다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan base-package="egovframework">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<context:component-scan base-package="com.test.mybatis"></context:component-scan>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmmn/egovError"/>
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">cmmn/dataAccessFailure</prop>
<prop key="org.springframework.transaction.TransactionException">cmmn/transactionFailure</prop>
<prop key="org.egovframe.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
<prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
</props>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 아래부분은 매핑할 xml파일이 있는 패키지경로를 설정한다. -->
<property name="typeAliasesPackage" value="com.test.mybatis" />
<property name="mapperLocations" value="classpath:com/test/mybatis/*.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp"/>
<!-- For Pagination Tag -->
<bean id="imageRenderer" class="egovframework.example.cmmn.web.EgovImgPaginationRenderer"/>
<bean id="paginationManager" class="org.egovframe.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
<property name="rendererType">
<map>
<entry key="image" value-ref="imageRenderer"/>
</map>
</property>
</bean>
<!-- /For Pagination Tag -->
<mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/>
</beans>
-----------------------------------------------------------------------------------------
11. 서버를 실행한다.
http://localhost:8086/testMyBatis/insert.do 주소 이동후 결과 확인
값이 추가 된것을 확인한다.
http://localhost:8086/testMyBatis/select.do 주소로 이동
DB에서 불러오는 모습을 볼수 있다.
'IT 및 공부 > Spring & JSP & PHP' 카테고리의 다른 글
전자정부 프레임워크 값넘기기 연습 (9) AOP 테스트 (0) | 2022.08.24 |
---|---|
전자정부 프레임워크 값넘기기 연습 (8) (0) | 2022.08.24 |
전자정부 프레임워크 값넘기기 연습 (7) (0) | 2022.08.24 |
전자정부 프레임워크 값넘기기 연습 (6) (0) | 2022.08.24 |
전자정부 프레임워크 값넘기기 연습 (5) (0) | 2022.08.23 |