1. pom.xml 에 Mybatis 추가
<!-- Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- Mybatis-Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<pom.xml 전체>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.kh</groupId>
<artifactId>member</artifactId>
<name>Spring_MVC2</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.0.6.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- DBCP(Data Base Connection Pool -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- Spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
<!-- Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- Mybatis-Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- GSON -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<!-- JSON -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib-ext-spring</artifactId>
<version>1.0.2</version>
</dependency>
<!-- MultipartHttpServletRequest -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
<!-- commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.8</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
2. mybatis-config.xml 설정
<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>
<!-- 입력 값이 NUll일 경우 ''''이 아닌 NUll 로 처리한다 -->
<settings>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<!-- 사용하고자 하는 클래스의 별칭을 선언한다. -->
<typeAliases>
<typeAlias type="org.kh.member.model.vo.Member" alias="Member"/>
<typeAlias type="org.kh.board.model.vo.Board" alias="Board"/>
</typeAliases>
</configuration>
3. applicationContext.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:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="lim"/>
<property name="password" value="1234"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:/mapper/**/*SQL.xml"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSession"/>
</bean>
</beans>
< 실습 <servlet , jsp> >
(1) 동적쿼리 If문
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>동적쿼리 if문</h1>
<hr>
<form action="/memberList" method="post">
<input type="checkbox" name="ckId">ID
<input type="checkbox" name="ckPw">PW
<input type="checkbox" name="ckName">NAME
<input type="checkbox" name="ckAddr">ADDR
<input type="submit" value="회원정보 요청">
</form>
</body>
</html>
<controller>
package org.kh.member.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
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 org.kh.member.model.service.MemberService;
import org.kh.member.model.vo.Check;
import org.kh.member.model.vo.Member;
/**
* Servlet implementation class MemberListServlet
*/
@WebServlet(name = "MemberList", urlPatterns = { "/memberList" })
public class MemberListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MemberListServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 인코딩
request.setCharacterEncoding("utf-8");
//2. 값 가져오기
String ckId = request.getParameter("ckId");
System.out.println(ckId); //check 할 시 on check 안 할시 null // 원래 value 값을 넣어줘야되는데 안넣었을때!!
String ckPw = request.getParameter("ckPw");
String ckName = request.getParameter("ckName");
String ckAddr = request.getParameter("ckAddr");
Check ck = new Check(ckId, ckPw, ckName, ckAddr);
MemberService service = new MemberService();
ArrayList<Member> list = service.checkMemberList(ck);
//결과처리
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if(!list.isEmpty()) {
for(Member m : list) {
out.println("NO : " + m.getMemberNo() + "<br>");
if(m.getMemberId() != null) {
out.println("ID : " + m.getMemberId() + "<br>");
}
if(m.getMemberPw() != null) {
out.println("PW : " + m.getMemberPw() + "<br>");
}
if(m.getMemberName() != null) {
out.println("NAME : " + m.getMemberName() + "<br>");
}
if(m.getMemberAddr() != null) {
out.println("Addr : " + m.getMemberAddr() + "<br>");
}
}
}else {
out.println("실패");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<service>
public ArrayList<Member> checkMemberList(Check ck) {
SqlSession session = SqlSessionTemlplate.getSqlSession();
MemberDao dao = new MemberDao();
ArrayList<Member> list = dao.checkMemberList(session,ck);
session.close();
return list;
}
<dao>
public ArrayList<Member> checkMemberList(SqlSession session, Check ck) {
List<Member> list = session.selectList("mybatis.checkMemberList",ck);
return (ArrayList<Member>)list;
}
<mybatis>
<select id="checkMemberList" parameterType="org.kh.member.model.vo.Check" resultType="Member"> <!-- alias 넣은것과 안넣은 것의 차이 -->
select member_no as memberNo,
<if test="ckId!=null and ckId.equals('on')">
member_id as memberId,
</if>
<if test="ckPw!=null and ckPw.equals('on')">
member_pw as memberPw,
</if>
<if test="ckName!=null and ckName.equals('on')">
member_name as memberName,
</if>
<if test="ckAddr!=null and ckAddr.equals('on')">
member_addr as memberAddr,
</if>
req_date as regDate from member
</select>
(2) 동적쿼리 choose
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>동적쿼리 Choose</h1>
<hr>
<form action="/search" method="get">
<input type="radio" name="select" value="name">이름으로 검색
<input type="radio" name="select" value="id">아이디로 검색
입력 : <input type="text" name="keyword">
<input type="submit" value="검색">
</form>
</body>
</html>
<controller>
package org.kh.member.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
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 org.kh.member.model.service.MemberService;
import org.kh.member.model.vo.Member;
import org.kh.member.model.vo.Search;
/**
* Servlet implementation class SearchServlet
*/
@WebServlet(name = "Search", urlPatterns = { "/search" })
public class SearchServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SearchServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String select = request.getParameter("select");
String keyword = request.getParameter("keyword");
Search search = new Search(select, keyword);
MemberService service = new MemberService();
ArrayList<Member> list = service.searchMember(search);
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
if(!list.isEmpty()) {
for(Member m : list) {
out.println("ID : " +m.getMemberId()+"<br>");
out.println("NAME : " +m.getMemberName()+"<br>");
out.println("ADDR : " +m.getMemberAddr()+"<br>");
out.println("<hr>");
}
}else {
out.println("실패");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<service>
public ArrayList<Member> searchMember(Search search) {
SqlSession session = SqlSessionTemlplate.getSqlSession();
MemberDao dao = new MemberDao();
ArrayList<Member> list = dao.searchMember(session, search);
session.close();
return list;
}
<dao>
public ArrayList<Member> searchMember(SqlSession session, Search search) {
List<Member> list = session.selectList("mybatis.searchMember",search);
return (ArrayList<Member>)list;
}
<mybatis>
<select id="searchMember" parameterType="org.kh.member.model.vo.Search" resultType="Member">
select member_no as memberNo,
member_id as memberId,
member_pw as memberPw,
member_name as memberName,
member_addr as memberAddr,
req_date as reqDate
from member
<choose>
<when test="select.equals('name')">
where member_name like '%'||#{keyword}||'%'
</when>
<when test="select.equals('id')">
where member_id like '%'||#{keyword}||'%'
</when>
</choose>
</select>
(3) 동적쿼리 trim
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>회원 정보 검색</h1>
<hr>
<form action="/search2" method="get">
이름 : <input type="text" name="memberName"><br>
주소 : <input type="text" name="memberAddr"><br>
<input type="submit" value="검색">
</form>
</body>
</html>
<controller>
package org.kh.member.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
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 org.kh.member.model.service.MemberService;
import org.kh.member.model.vo.Member;
import org.kh.member.model.vo.Search2;
/**
* Servlet implementation class Search2Servlet
*/
@WebServlet(name = "Search2", urlPatterns = { "/search2" })
public class Search2Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Search2Servlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.인코딩
request.setCharacterEncoding("utf-8");
String memberName = request.getParameter("memberName");
String memberAddr = request.getParameter("memberAddr");
MemberService service = new MemberService();
Search2 search = new Search2(memberName, memberAddr);
ArrayList<Member> list = service.search2Member(search);
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
if(!list.isEmpty()) {
for(Member m : list) {
out.println("NAME : " +m.getMemberName()+"<br>");
out.println("ADDR : " +m.getMemberAddr()+"<br>");
out.println("<hr>");
}
}else {
out.println("실패");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<service>
public ArrayList<Member> search2Member(Search2 search) {
SqlSession session = SqlSessionTemlplate.getSqlSession();
MemberDao dao = new MemberDao();
ArrayList<Member> list = dao.search2Member(session, search);
session.close();
return list;
}
<dao>
public ArrayList<Member> search2Member(SqlSession session, Search2 search) {
List<Member> list = session.selectList("mybatis.search2Member",search);
return (ArrayList<Member>)list;
}
<mybatis>
<select id="search2Member" parameterType="org.kh.member.model.vo.Search2" resultType="Member">
select member_no as memberNo,
member_id as memberId,
member_pw as memberPw,
member_name as memberName,
member_addr as memberAddr,
req_date as reqDate
from member
<trim prefix="where" prefixOverrides="and|or">
<if test="memberName!=null and memberName!=''">
member_name like '%'||#{memberName}||'%'
</if>
<if test="memberAddr!=null and memberAddr!=''">
and member_addr like '%'||#{memberAddr}||'%'
</if>
</trim>
</select>
(4) 동적쿼리 foreach
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>주소로 검색</h1>
<hr>
<form action="/search3" method="post">
<input type="checkbox" name="addr" value="서울">서울<br>
<input type="checkbox" name="addr" value="서울시">서울시<br>
<input type="checkbox" name="addr" value="평택면">평택면<br>
<input type="checkbox" name="addr" value="평택동">평택동<br>
<input type="checkbox" name="addr" value="평택리">평택리<br>
<input type="submit" value="검색">
</form>
</body>
</html>
<controller>
package org.kh.member.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
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 org.kh.member.model.service.MemberService;
import org.kh.member.model.vo.Member;
/**
* Servlet implementation class Search3Servlet
*/
@WebServlet(name = "Search3", urlPatterns = { "/search3" })
public class Search3Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Search3Servlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String[] addr = request.getParameterValues("addr");
MemberService service = new MemberService();
ArrayList<Member> list = service.search3Member(addr);
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
if(!list.isEmpty()) {
for(Member m : list) {
out.println("ID : " +m.getMemberId()+"<br>");
out.println("NAME : " +m.getMemberName()+"<br>");
out.println("ADDR : " +m.getMemberAddr()+"<br>");
out.println("<hr>");
}
}else {
out.println("실패");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<service>
public ArrayList<Member> search3Member(String[] addr) {
SqlSession session = SqlSessionTemlplate.getSqlSession();
MemberDao dao = new MemberDao();
ArrayList<Member> list = dao.search3Member(session, addr);
session.close();
return list;
}
<dao>
public ArrayList<Member> search3Member(SqlSession session, String[] addr) {
List<Member> list = session.selectList("mybatis.search3Member",addr);
return (ArrayList<Member>)list;
}
<mybatis>
<select id="search3Member" resultType="Member" parameterType="map"> <!-- 여기서는 parametertype 자동으로 지정됨 -->
select member_no as memberNo,
member_id as memberId,
member_pw as memberPw,
member_name as memberName,
member_addr as memberAddr,
req_date as reqDate
from member where member_addr in
<foreach collection="array" item="addr" open="(" separator="," close=")">
#{addr} <!-- item 을 넣어주는것 -->
</foreach>
</select>
'이공계전문기술연수 > Spring Framework' 카테고리의 다른 글
<이공계기술전문연수> Spring MVC (수행 흐름) (0) | 2019.11.27 |
---|---|
<이공계기술전문연수> Spring MVC(View 흐름) (0) | 2019.11.26 |
<이공계기술전문연수> Spring과 외부 라이브러리 연결 (0) | 2019.11.26 |
<이공계기술전문연수> Spring MVC 설정 (0) | 2019.11.26 |
<이공계기술전문연수> 1. Framework 특징 (0) | 2019.11.19 |