| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- VS Code
- 전체 페이지 데이터베이스
- visual studio code
- D2coding 폰트 다운로드
- 인라인 데이터베이스
- 노션 텍스트 블록
- D2coding 폰트
- D2Coding
- 노션 데이터베이스
- 노션 하위 페이지
- Notion
- 노션
- 노션 데이터베이스 활용
- 노션 데이터베이스 전환
Crescendo Code
5월 10일 (수) - [ myBatis 프레임워크를 통한 우편번호 검색기 / Simple 게시판 구현 ] 본문
◆ myBatis
- 데이터베이스의 데이터에 관한 처리 기능을 제공하는 프레임워크
- sql mapper framework 라고도 한다.
- XML과 애노테이션으로 설정할 수 있다.
▶ myBatis 사이트 : https://blog.mybatis.org
The MyBatis Blog
A blog about the the MyBatis data mapper framework.
blog.mybatis.org


▶ MyBatis 설정에 필요한 lib 및 파일
- lib : JDBC 드라이버 / MyBatis 프레임워크 / 로그 출력
- 설정 파일 : 데이터베이스 접속 / SQL mapper
- 위 설정의 불편함을 해소하기 위해 Dynamic → Maven(Gradle) Project로 변경을 많이 한다.
▶ 시작 전 세팅
1. 이클립스 java workspace로 변경
2. log4j-1.2.17.jar / mariadb-java-client-3.0.8.jar / mybatis-3.5.13.jar 이 3개의 lib를 API 폴더 안에 모아놓는다.
- log4j-1.2.17.jar는 Filezilla에서 다운받을 수 있고, 위 링크에서 받았다면 더 최신 버전이다.
3. Filezilla에서 log4j.xml / mapper.xml / myBatisConfig.xml 다운로드
- log4j.xml : 작업 진행에 대한 로그를 출력하는 프레임워크
- myBatisConfig.xml : 데이터베이스에 접속하는 내용을 설정
▶ 새 프로젝트 MybatisEx01 생성
▶ 프로젝트 우클릭 - BuildPath - Configure Build Path 에서 classpath에 lib 3개 넣기

▶ src 폴더에 log4j.xml / myBatisConfig.xml 파일 복사해서 넣기

▶ log4j.xml 작성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1}:%-3L) %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
▶ myBatisConfig.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>
<environments default="mariadb1">
<environment id="mariadb1">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="org.mariadb.jdbc.Driver" />
<property name="url" value="jdbc:mariadb://localhost:3306/sample" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
<environment id="mariadb2">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="org.mariadb.jdbc.Driver" />
<property name="url" value="jdbc:mariadb://localhost:3306/project" />
<property name="username" value="project" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="model1/mapper.xml" />
</mappers>
</configuration>
▶ model1 패키지 생성 후, 그 안에 mapper.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="mybatis1">
<!-- SQL문을 XML처럼 작성 -->
<select id="deptlist" resultType="model1.DeptTO">
select deptno, dname, loc
from dept
where deptno = 10
</select>
</mapper>
▶ model1 패키지 안에 DeptTO.java 클래스 생성 및 코드 작성
package model1;
public class DeptTO {
private String deptno;
private String dname;
private String loc;
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
public String getName() {
return dname;
}
public void setName(String name) {
this.dname = name;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}
◈ myBatis 예제 1
- myBatis 프레임워크의 연결과 설정(로그) 호출
▶ src - MyBatisEx01.java 클래스 파일 생성 / 작성 및 실행
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisEx01 {
public static void main(String[] args) {
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
System.out.println( "설정 호출" );
// session
sqlSession = sqlSessionFactory.openSession();
System.out.println( "연결 성공" );
} catch (IOException e) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if ( sqlSession != null ) sqlSession.close();
if ( is != null ) try { is.close(); } catch ( IOException e ) {}
}
}
}

◈ myBatis 예제 2
- select문 한 줄의 데이터 출력
▶ src - MyBatisEx02.java 클래스 파일 생성 / 작성 및 실행
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import model1.DeptTO;
public class MyBatisEx02 {
public static void main(String[] args) {
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
System.out.println( "설정 호출" );
sqlSession = sqlSessionFactory.openSession();
System.out.println( "연결 성공" );
// 한 줄의 데이터 : selectOne
// 여러 줄의 데이터 : selectList
DeptTO to = (DeptTO)sqlSession.selectOne( "deptlist" );
System.out.println( to.getDeptno() );
System.out.println( to.getDname() );
System.out.println( to.getLoc() );
} catch (IOException e) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if ( sqlSession != null ) sqlSession.close();
if ( is != null ) try { is.close(); } catch ( IOException e ) {}
}
}
}

◈ myBatis 예제 3
- select문 여러 줄의 데이터 출력
▶ mapper.xml 파일에 아래 코드 추가
<select id="selectall" resultType="model1.DeptTO">
select deptno, dname, loc
from dept
</select>
▶ src - MyBatisEx03.java 클래스 파일 생성 / 작성 및 실행
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import model1.DeptTO;
public class MyBatisEx03 {
public static void main(String[] args) {
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
System.out.println( "설정 호출" );
sqlSession = sqlSessionFactory.openSession();
System.out.println( "연결 성공" );
// 한 줄의 데이터 : selectOne
// 여러 줄의 데이터 : selectList
// List<DeptTO> lists = sqlSession.selectList( "selectall" );
ArrayList<DeptTO> lists = (ArrayList)sqlSession.selectList( "selectall" );
for( DeptTO to : lists ) {
System.out.println( to.getDeptno() );
System.out.println( to.getDname() );
System.out.println( to.getLoc() );
}
} catch (IOException e) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if ( sqlSession != null ) sqlSession.close();
if ( is != null ) try { is.close(); } catch ( IOException e ) {}
}
}
}

- List 와 ArrayList 구문 둘 다 동일하게 출력된다.
◈ myBatis 예제 4
- 웹에서 구현하기
▶ 이클립스 jsp-workspace로 변경
▶ 아래와 같이 필요한 파일 및 문서 삽입
▶ DeptTO.java 안의 내용은 위 예제와 동일하게 작성

▶ log4j.xml 코드 작성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1}:%-3L) %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
▶ myBatisConfig.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>
<environments default="mariadb1">
<environment id="mariadb1">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="org.mariadb.jdbc.Driver" />
<property name="url" value="jdbc:mariadb://localhost:3306/sample" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="model1/mapper.xml" />
</mappers>
</configuration>
▶ mapper.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="mybatis1">
<select id="selectone" resultType="model1.DeptTO">
select deptno, dname, loc
from dept
where deptno = 10
</select>
</mapper>
▶ mybatis01.jsp 코드 작성 및 실행
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="model1.DeptTO" %>
<%
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
StringBuilder sbHtml = new StringBuilder();
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
sqlSession = sqlSessionFactory.openSession();
DeptTO to = (DeptTO)sqlSession.selectOne( "selectone" );
sbHtml.append( "<table>" );
sbHtml.append( "<tr>" );
sbHtml.append( "<td>" + to.getDeptno() + "</td>" );
sbHtml.append( "<td>" + to.getDname() + "</td>" );
sbHtml.append( "<td>" + to.getLoc() + "</td>" );
sbHtml.append( "</tr>" );
sbHtml.append( "</table>" );
} catch( IOException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( sqlSession != null ) sqlSession.close();
if( is != null ) is.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>


◈ myBatis 예제 5
- select 문으로 1개의 파라미터값을 받아서 처리할 때
▶ mapper.xml 문서에 아래 코드 추가
<select id="selectparamone2" resultType="model1.DeptTO">
select deptno, dname, loc
from dept
where deptno = #{deptno}
</select>
▶ mybatis02.jsp 파일을 새로 복사한 후 Dept to 할당 부분을 아래 코드로 변경 후 실행
DeptTO to = (DeptTO)sqlSession.selectOne( "selectparamone2", "20" );

◈ myBatis 예제 6
- select 문으로 여러 개의 파라미터값을 받아서 처리할 때
▶ mapper.xml 문서에 아래 코드 추가
<select id="selectparamone3" parameterType="model1.DeptTO" resultType="model1.DeptTO">
select deptno, dname, loc
from dept
where deptno = #{deptno} and dname=#{dname}
</select>
▶ mybatis03.jsp 파일을 새로 복사한 후 코드 작성 후 실행
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="model1.DeptTO" %>
<%
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
StringBuilder sbHtml = new StringBuilder();
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
sqlSession = sqlSessionFactory.openSession();
DeptTO paramTO = new DeptTO();
paramTO.setDeptno( "30" );
paramTO.setDname( "SALES" );
DeptTO to = (DeptTO)sqlSession.selectOne( "selectparamone3", paramTO );
sbHtml.append( "<table>" );
sbHtml.append( "<tr>" );
sbHtml.append( "<td>" + to.getDeptno() + "</td>" );
sbHtml.append( "<td>" + to.getDname() + "</td>" );
sbHtml.append( "<td>" + to.getLoc() + "</td>" );
sbHtml.append( "</tr>" );
sbHtml.append( "</table>" );
} catch( IOException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( sqlSession != null ) sqlSession.close();
if( is != null ) is.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>

◈ ename을 통해 그 사원의 정보를 출력하는 Mybatis Project 만들기
▶ EmpTO.java 코드 작성
package model1;
public class EmpTO {
private String empno;
private String ename;
private String job;
private String mgr;
public String getEmpno() {
return empno;
}
public void setEmpno(String empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getMgr() {
return mgr;
}
public void setMgr(String mgr) {
this.mgr = mgr;
}
}
▶ mapper.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="mybatis1">
<select id="selectparamlist" resultType="model1.EmpTO">
select empno, ename, job, mgr
from emp
where ename = #{ename}
</select>
</mapper>
▶ mybatis01.jsp 파일 생성 후 실행
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="model1.EmpTO" %>
<%
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
StringBuilder sbHtml = new StringBuilder();
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
sqlSession = sqlSessionFactory.openSession();
EmpTO to = (EmpTO)sqlSession.selectOne( "selectparamlist", "SCOTT" );
sbHtml.append( "<table>" );
sbHtml.append( "<tr>" );
sbHtml.append( "<td>" + to.getEmpno() + "</td>" );
sbHtml.append( "<td>" + to.getEname() + "</td>" );
sbHtml.append( "<td>" + to.getJob() + "</td>" );
sbHtml.append( "<td>" + to.getMgr() + "</td>" );
sbHtml.append( "</tr>" );
sbHtml.append( "</table>" );
} catch( IOException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( sqlSession != null ) sqlSession.close();
if( is != null ) is.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>

◈ SQL의 일부 검색인 like를 통해 ename을 검색하고 사원 정보를 출력하기
▶ mapper.xml 파일에 아래 코드 추가
<select id="selectparamlist2" resultType="model1.EmpTO">
select empno, ename, job, mgr
from emp
where ename like #{ename}
</select>
▶ mybatis02.jsp 생성 후 실행
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="java.util.List" %>
<%@ page import="model1.EmpTO" %>
<%
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
StringBuilder sbHtml = new StringBuilder();
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
sqlSession = sqlSessionFactory.openSession();
List<EmpTO> lists = sqlSession.selectList( "selectparamlist2", "S%" );
sbHtml.append( "<table>" );
for( EmpTO to : lists ) {
sbHtml.append( "<tr>" );
sbHtml.append( "<td>" + to.getEmpno() + "</td>" );
sbHtml.append( "<td>" + to.getEname() + "</td>" );
sbHtml.append( "<td>" + to.getJob() + "</td>" );
sbHtml.append( "<td>" + to.getMgr() + "</td>" );
sbHtml.append( "</tr>" );
}
sbHtml.append( "</table>" );
} catch( IOException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( sqlSession != null ) sqlSession.close();
if( is != null ) is.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>

◈ 위 예제를 DB 문법적으로 해결하기
▶ mapper.xml 파일에 아래 코드 추가
<select id="selectparamlist3" resultType="model1.EmpTO">
select empno, ename, job, mgr
from emp
where ename like concat( #{ename}, '%' )
</select>
▶ mybatis02.jsp 파일의 일부를 아래 코드로 변경 후 실행
List<EmpTO> lists = sqlSession.selectList( "selectparamlist3", "S" );
- 실행시 위 예제와 동일한 결과가 출력된다.
◈ myBatis 예제 - DB insert 문
- Transaction : insert / update / delete 구문 시 데이터베이스에 직접 적용되는 것이 아니라, 데이터를 잠시 보관해둔다.
- Transaction은 commit / rollback 기능이 있다.
- 데이터베이스 적용은 commit 으로 한다.
▶ mapper.xml 파일에 아래 코드 추가
<insert id="insert1" parameterType="model1.DeptTO">
insert into dept2 ( deptno, dname, loc )
values ( #{deptno}, #{dname}, #{loc} )
</insert>
▶ mybatis04.jsp 파일 코드 작성 및 실행
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="model1.DeptTO" %>
<%
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
StringBuilder sbHtml = new StringBuilder();
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
// true - auto commit
sqlSession = sqlSessionFactory.openSession( true );
DeptTO to = new DeptTO();
to.setDeptno( "90" );
to.setDname( "총무부" );
to.setLoc( "서울" );
int result = sqlSession.insert( "insert1", to );
if( result == 1) {
// sqlSession.commit();
sbHtml.append( "입력 성공 : " + result );
}
} catch( IOException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( sqlSession != null ) sqlSession.close();
if( is != null ) is.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>
▶ commit 기능의 수행 방법
1. sqlSession = sqlSessionFactory.openSession( true );
2. sqlSession.commit();

◈ myBatis 예제 - DB update / delete 문
▶ mapper.xml 파일에 아래 코드 추가
<update id="update1" parameterType="model1.DeptTO">
update dept2
set dname=#{dname}
where deptno=#{deptno}
</update>
<delete id="delete1" parameterType="model1.DeptTO">
delete from dept2
where deptno=#{deptno}
</delete>
▶ mybatis05.jsp 파일 생성 / 코드 작성 및 실행 ( update )
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="model1.DeptTO" %>
<%
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
StringBuilder sbHtml = new StringBuilder();
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
sqlSession = sqlSessionFactory.openSession( true );
DeptTO to = new DeptTO();
to.setDeptno( "90" );
to.setDname( "회계부" );
int result = sqlSession.update( "update1", to );
if( result == 1) {
sbHtml.append( "수정 성공" );
}
} catch( IOException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( sqlSession != null ) sqlSession.close();
if( is != null ) is.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>

▶ mybatis06.jsp 파일 생성 / 코드 작성 및 실행 ( delete )
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.ibatis.io.Resources" %>
<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactory" %>
<%@ page import="org.apache.ibatis.session.SqlSessionFactoryBuilder" %>
<%@ page import="model1.DeptTO" %>
<%
String resource = "myBatisConfig.xml";
InputStream is = null;
SqlSession sqlSession = null;
StringBuilder sbHtml = new StringBuilder();
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
sqlSession = sqlSessionFactory.openSession( true );
DeptTO to = new DeptTO();
to.setDeptno( "90" );
to.setDname( "회계부" );
int result = sqlSession.delete( "delete1", to );
if( result == 1) {
sbHtml.append( "삭제 성공" );
}
} catch( IOException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( sqlSession != null ) sqlSession.close();
if( is != null ) is.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>

◈ myBatis 예제 - DAO
▶ mapper.xml 파일에 아래 코드 추가
<select id="selectlist" resultType="model1.DeptTO">
select deptno, dname, loc
from dept
</select>
▶ DeptDAO.java 클래스 생성 후 코드 작성
package model1;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionException;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class DeptDAO {
private SqlSession sqlSession;
public DeptDAO() {
String resource = "myBatisConfig.xml";
InputStream is = null;
try {
is = Resources.getResourceAsStream( resource );
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( is );
this.sqlSession = sqlSessionFactory.openSession( true );
} catch (IOException e) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( is != null ) try { is.close(); } catch ( IOException e ) {}
}
}
public List<DeptTO> selectList() {
List<DeptTO> lists = sqlSession.selectList( "selectlist" );
if( sqlSession != null ) sqlSession.close();
return lists;
}
}
▶ dao01.jsp 생성 후 코드 작성 및 실행
<%@page import="model1.DeptTO"%>
<%@page import="java.util.List"%>
<%@page import="model1.DeptDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
DeptDAO dao = new DeptDAO();
List<DeptTO> lists = dao.selectList();
StringBuilder sbHtml = new StringBuilder();
sbHtml.append( "<table>" );
for( DeptTO to : lists ) {
sbHtml.append( "<tr>" );
sbHtml.append( "<td>" + to.getDeptno() + "</td>" );
sbHtml.append( "<td>" + to.getDname() + "</td>" );
sbHtml.append( "<td>" + to.getLoc() + "</td>" );
sbHtml.append( "</tr>" );
}
sbHtml.append( "</table>" );
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=sbHtml %>
</body>
</html>

◈ myBatis를 활용해 우편번호 검색기 만들기
- 기법 : model1
완성자료 : F / 수업자료 / 우편번호 검색기 / MyBatis 프레임워크 활용 방식
◈ myBatis를 활용해 Simple 게시판 만들기
- 기법 : model1
완성자료 : F / 수업자료 / 게시판 / simple 게시판 - MyBatis - model1 방식
'KIC 백엔드 수업' 카테고리의 다른 글
| 5월 12일 (금) - [] (0) | 2023.05.12 |
|---|---|
| 5월 11일 (목) - [ myBatis 어노테이션 기법 / 우편번호 검색기 / Simple 게시판 검색기능 구현 ] (1) | 2023.05.12 |
| 5월 9일 (화) - [ Core의 여러가지 기능 및 예제 / EL, JSTL을 통한 우편번호 검색기 / Dynamic → Maven 프로젝트 전환 ] (0) | 2023.05.09 |
| 5월 8일 (월) - [ 로그인 상태값 유지 / page / request / session / application / Cookie / EL / JSTL - Core ] (0) | 2023.05.08 |
| 5월 4일 (목) - [ MVC - Model2 URL 방식 예제, 게시판 ] (0) | 2023.05.04 |