SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
http://blog.naver.com/amelia670
MyBatis 튜토리얼
전정완
2016-07-10
http://blog.naver.com/amelia670
목차
1. 왜 MyBatis인가?
2. MyBatis
3. 예제 프로젝트
http://blog.naver.com/amelia670
왜 MyBatis인가?
발표 주제를 MyBatis로 선정한 이유
- 실무 기반 프레임워크
2016년 롯데정보통신 프로그래머 채용 시험에서 가산점
Spring, Mybatis, AgularJS, Express
목적
실무에서 활발히 사용되고 있으나 우리는 잘 몰랐던 것들 이번 기회에 알고 가자
Q. 발표를 들으며 드는 궁금한 점과 무엇을 더 할 수 있을지 생각하기
3
http://blog.naver.com/amelia670
MyBatis
iBatis
ORM
프레임
워크
오픈
소스
4
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가?
MyBatis eliminates almost all of the JDBC code and manual
setting of parameters and retrieval of results. MyBatis can use
simple XML or Annotations for configuration and map primitives,
Map interfaces and Java POJOs (Plain Old Java Objects) to
database records.
마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및
결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시
타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기
위해 XML과 애노테이션을 사용할 수 있다.
원문 : http://www.mybatis.org/mybatis-3/index.html
번역 : http://www.mybatis.org/mybatis-3/ko/index.html
5
http://blog.naver.com/amelia670
원문 : http://www.mybatis.org/mybatis-3/index.html
번역 : http://www.mybatis.org/mybatis-3/ko/index.html
MyBatis가 왜 좋은가?
MyBatis eliminates almost all of the JDBC code and manual
setting of parameters and retrieval of results. MyBatis can use
simple XML or Annotations for configuration and map primitives,
Map interfaces and Java POJOs (Plain Old Java Objects) to
database records.
마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및
결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시
타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기
위해 XML과 애노테이션을 사용할 수 있다.
왜 MyBatis인가?
소스 코드를 줄인다.
6
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가? 소스코드를 줄인다.
- JDBC를 이용한 Java와 DB 연결하는 코드
public Student findStudentById(int studId)
{
Student student = null;
Connection conn = null;
try{
//obtain connection
conn = getDatabaseConnection();
String sql = "SELECT * FROM STUDENTS WHERE STUD_ID=?";
//create PreparedStatement
PreparedStatement pstmt = conn.prepareStatement(sql);
//set input parameters
pstmt.setInt(1, studId);
ResultSet rs = pstmt.executeQuery();
//fetch results from database and populate into Java objects
if(rs.next()) {
student = new Student();
student.setStudId(rs.getInt("stud_id"));
student.setName(rs.getString("name"));
student.setEmail(rs.getString("email"));
student.setDob(rs.getDate("dob"));
}
} catch (SQLException e){
throw new RuntimeException(e);
}finally{
//close connection
if(conn!= null){
try {
conn.close();
} catch (SQLException e){ }
}
}
return student;
}
public void createStudent(Student student)
{
Connection conn = null;
try{
//obtain connection
conn = getDatabaseConnection();
String sql = "INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(?,?,?,?)";
//create a PreparedStatement
PreparedStatement pstmt = conn.prepareStatement(sql);
//set input parameters
pstmt.setInt(1, student.getStudId());
pstmt.setString(2, student.getName());
pstmt.setString(3, student.getEmail());
pstmt.setDate(4, new
java.sql.Date(student.getDob().getTime()));
pstmt.executeUpdate();
} catch (SQLException e){
throw new RuntimeException(e);
}finally{
//close connection
if(conn!= null){
try {
conn.close();
} catch (SQLException e){ }
}
}
}
package com.mybatis3.domain;
import java.util.Date;
public class Student
{
private Integer studId;
private String name;
private String email;
private Date dob;
// setters and getters
}
Student 클래스
findStudentById() - 학생 selectcreateStudent() - 학생 insert
protected Connection getDatabaseConnection() throws SQLException
{
try{
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection
("jdbc:mysql://localhost:3306/test", "root", "admin");
} catch (SQLException e){
throw e;
} catch (Exception e){
throw new RuntimeException(e);
}
}
getDatabaseConnection() -DB연결
Student 클래스
7
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가? 소스코드를 줄인다.
- JDBC를 이용한 Java와 DB 연결하는 코드
public Student findStudentById(int studId)
{
Student student = null;
Connection conn = null;
try{
//obtain connection
conn = getDatabaseConnection();
String sql = "SELECT * FROM STUDENTS WHERE STUD_ID=?";
//create PreparedStatement
PreparedStatement pstmt = conn.prepareStatement(sql);
//set input parameters
pstmt.setInt(1, studId);
ResultSet rs = pstmt.executeQuery();
//fetch results from database and populate into Java objects
if(rs.next()) {
student = new Student();
student.setStudId(rs.getInt("stud_id"));
student.setName(rs.getString("name"));
student.setEmail(rs.getString("email"));
student.setDob(rs.getDate("dob"));
}
} catch (SQLException e){
throw new RuntimeException(e);
}finally{
//close connection
if(conn!= null){
try {
conn.close();
} catch (SQLException e){ }
}
}
return student;
}
public void createStudent(Student student)
{
Connection conn = null;
try{
//obtain connection
conn = getDatabaseConnection();
String sql = "INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(?,?,?,?)";
//create a PreparedStatement
PreparedStatement pstmt = conn.prepareStatement(sql);
//set input parameters
pstmt.setInt(1, student.getStudId());
pstmt.setString(2, student.getName());
pstmt.setString(3, student.getEmail());
pstmt.setDate(4, new
java.sql.Date(student.getDob().getTime()));
pstmt.executeUpdate();
} catch (SQLException e){
throw new RuntimeException(e);
}finally{
//close connection
if(conn!= null){
try {
conn.close();
} catch (SQLException e){ }
}
}
}
package com.mybatis3.domain;
import java.util.Date;
public class Student
{
private Integer studId;
private String name;
private String email;
private Date dob;
// setters and getters
}
Student 클래스
findStudentById() - 학생 selectcreateStudent() - 학생 insert
인풋 파라미터 세팅하고
직접 연결 생성하고
구문 만들고
protected Connection getDatabaseConnection() throws SQLException
{
try{
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection
("jdbc:mysql://localhost:3306/test", "root", "admin");
} catch (SQLException e){
throw e;
} catch (Exception e){
throw new RuntimeException(e);
}
}
getDatabaseConnection() -DB연결
직접 자원 닫고
인풋 파라미터 세팅하고
직접 연결 생성하고
구문 만들고
직접 자원 닫고
Student 클래스
8
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가? 소스코드를 줄인다.
- JDBC를 이용한 Java와 DB 연결하는 코드
public Student findStudentById(int studId)
{
Student student = null;
Connection conn = null;
try{
//obtain connection
conn = getDatabaseConnection();
String sql = "SELECT * FROM STUDENTS WHERE STUD_ID=?";
//create PreparedStatement
PreparedStatement pstmt = conn.prepareStatement(sql);
//set input parameters
pstmt.setInt(1, studId);
ResultSet rs = pstmt.executeQuery();
//fetch results from database and populate into Java objects
if(rs.next()) {
student = new Student();
student.setStudId(rs.getInt("stud_id"));
student.setName(rs.getString("name"));
student.setEmail(rs.getString("email"));
student.setDob(rs.getDate("dob"));
}
} catch (SQLException e){
throw new RuntimeException(e);
}finally{
//close connection
if(conn!= null){
try {
conn.close();
} catch (SQLException e){ }
}
}
return student;
}
public void createStudent(Student student)
{
Connection conn = null;
try{
//obtain connection
conn = getDatabaseConnection();
String sql = "INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(?,?,?,?)";
//create a PreparedStatement
PreparedStatement pstmt = conn.prepareStatement(sql);
//set input parameters
pstmt.setInt(1, student.getStudId());
pstmt.setString(2, student.getName());
pstmt.setString(3, student.getEmail());
pstmt.setDate(4, new
java.sql.Date(student.getDob().getTime()));
pstmt.executeUpdate();
} catch (SQLException e){
throw new RuntimeException(e);
}finally{
//close connection
if(conn!= null){
try {
conn.close();
} catch (SQLException e){ }
}
}
}
package com.mybatis3.domain;
import java.util.Date;
public class Student
{
private Integer studId;
private String name;
private String email;
private Date dob;
// setters and getters
}
Student 클래스
findStudentById() - 학생 selectcreateStudent() - 학생 insert
protected Connection getDatabaseConnection() throws SQLException
{
try{
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection
("jdbc:mysql://localhost:3306/test", "root", "admin");
} catch (SQLException e){
throw e;
} catch (Exception e){
throw new RuntimeException(e);
}
}
getDatabaseConnection() -DB연결
Student 클래스
SELET * FROM STUDENTS
conn=getDatabaseConnection();
con.close();
PreparedStatement
9
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가? 소스코드를 줄인다.
- MyBatis를 이용한 Java와 DB 연결하는 코드
<select id="findStudentById" parameterType="int" resultType=" Student">
SELECT STUD_ID AS studId, NAME, EMAIL, DOB
FROM STUDENTS WHERE STUD_ID=#{Id}
</select>
<insert id="insertStudent" parameterType="Student">
INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(#{studId},#{name},#{email},#{dob})
</insert>
public interface StudentMapper
{
Student findStudentById(Integer id);
void insertStudent(Student student);
}
SqlSession session = getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
// Select Student by Id
Student student = mapper.selectStudentById(1);
//To insert a Student record
mapper.insertStudent(student);
StudentMapper.xml
java 코드인터페이스 StudentMapper
SQL문을 프로그램에서 분리하여 XML 파일에 별도로 작성
JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거
10
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가? 소스코드를 줄인다.
- MyBatis를 이용한 Java와 DB 연결하는 코드
<select id="findStudentById" parameterType="int" resultType=" Student">
SELECT STUD_ID AS studId, NAME, EMAIL, DOB
FROM STUDENTS WHERE STUD_ID=#{Id}
</select>
<insert id="insertStudent" parameterType="Student">
INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(#{studId},#{name},#{email},#{dob})
</insert>
public interface StudentMapper
{
Student findStudentById(Integer id);
void insertStudent(Student student);
}
SqlSession session = getSqlSessionFactory().openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
// Select Student by Id
Student student = mapper.selectStudentById(1);
//To insert a Student record
mapper.insertStudent(student);
StudentMapper.xml
java 코드인터페이스 StudentMapper
SQL문을 프로그램에서 분리하여 XML 파일에 별도로 작성
JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거
11
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가?
소스 코드를 줄인다.
미관상 보기 좋아 마음이 안정됨
= 삽질을 줄인다.
업무를 빨리 끝내고 놀러감
12
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가?
소스 코드를 줄인다.
미관상 보기 좋아 마음이 안정됨
= 삽질을 줄인다.
개발자 입장업무를 빨리 끝내고 놀러감
13
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가?
소스 코드를 줄인다.
미관상 보기 좋아 마음이 안정됨
= 삽질을 줄인다.
개발자 입장업무를 빨리 끝내고 놀러감
CEO 입장 ?
14
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가?
소스 코드를 줄인다.
미관상 보기 좋아 마음이 안정됨
= 삽질을 줄인다.
개발자 입장업무를 빨리 끝내고 놀러감
= 생산성이 향상된다.
CEO 입장 같은 제품을 만드는데 드는 재료가 적어 비용 절감
최소의 비용으로 최대의 효용
15
http://blog.naver.com/amelia670
왜 MyBatis인가?
MyBatis가 왜 좋은가?
소스 코드를 줄인다.
+ 또 많은 장점들
기존 한계의 극복, 성능, 이식성 …..
16
http://blog.naver.com/amelia670
예제 프로젝트
Java - MyBatis - MySQL 예제 프로젝트로 CRUD 작업 해보기
목표
- mybatis를 이용하여 java 애플리케이션과 mysql 데이터베이 연결하기
- configuration과 mapper를 XML 파일로 작성해보기
환경
windows 8, eclipse
17
http://blog.naver.com/amelia670
예제 프로젝트
1. 다운로드
mybatis 3.4.1
https://github.com/mybatis/mybatis-3
MySQL Java connector 5.1.39
- MySQL과 Java를 연결하기 위한 드라이버
- http://dev.mysql.com/downloads/connector/j/
소스코드
https://github.com/junjw1/mybatis-java-example.git
18
http://blog.naver.com/amelia670
예제 프로젝트
2. 데이터베이스 만들기
- localhost에서, jjw라는 DB에, persons라는 테이블 생성
- mysql에 root/apmsetup로 로그인해서, jjw라는 사용자를 추가하고, 모든 권한을 부여한 뒤, jjw가 테이블을 만들었음
19
http://blog.naver.com/amelia670
예제 프로젝트
3. 다운로드한 라이브러리(.zip) 압축풀기
4. java project 생성하고, 라이브러리 추가하기
프로젝트 properties - java build path - libraries탭에서 add external JARs…로 두 개의 라이브러리 추가
20
http://blog.naver.com/amelia670
예제 프로젝트
5. 4개의 java 파일 작성
- Main.java
- Person.java
- PersonDAO.java
- MyBatisConnectionFactory.java
6. 2개의 xml 파일 작성
- person.xml
- config.xml
21
http://blog.naver.com/amelia670
예제 프로젝트
7. 실행 결과
22
http://blog.naver.com/amelia670
참고
mybatis.org
http://www.mybatis.org/mybatis-3/index.html
mybatis github
https://github.com/mybatis/mybatis-3/tree/master/src/site
Java + myBatis + MySql
http://hmkcode.com/java-mybatis-mysql/
23
http://blog.naver.com/amelia670
- End -
Thank you

Contenu connexe

Tendances

An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDBCésar Trigo
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵중선 곽
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo dbHemant Sharma
 
Introduction to structured query language (sql)
Introduction to structured query language (sql)Introduction to structured query language (sql)
Introduction to structured query language (sql)Dhani Ahmad
 
Schema migrations in no sql
Schema migrations in no sqlSchema migrations in no sql
Schema migrations in no sqlDr-Dipali Meher
 
NOSQL and MongoDB Database
NOSQL and MongoDB DatabaseNOSQL and MongoDB Database
NOSQL and MongoDB DatabaseTariqul islam
 
Web micro-framework BATTLE!
Web micro-framework BATTLE!Web micro-framework BATTLE!
Web micro-framework BATTLE!Richard Jones
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databasesJames Serra
 
Data Modeling for MongoDB
Data Modeling for MongoDBData Modeling for MongoDB
Data Modeling for MongoDBMongoDB
 
Database Design
Database DesignDatabase Design
Database Designlearnt
 
Database development life cycle
Database development life cycleDatabase development life cycle
Database development life cycleAfrasiyab Haider
 
openCypher: Introducing subqueries
openCypher: Introducing subqueriesopenCypher: Introducing subqueries
openCypher: Introducing subqueriesopenCypher
 
UNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdf
UNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdfUNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdf
UNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdfKavitaShinde26
 

Tendances (20)

An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
MySql slides (ppt)
MySql slides (ppt)MySql slides (ppt)
MySql slides (ppt)
 
MYSQL.ppt
MYSQL.pptMYSQL.ppt
MYSQL.ppt
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo db
 
Introduction to structured query language (sql)
Introduction to structured query language (sql)Introduction to structured query language (sql)
Introduction to structured query language (sql)
 
Schema migrations in no sql
Schema migrations in no sqlSchema migrations in no sql
Schema migrations in no sql
 
NOSQL and MongoDB Database
NOSQL and MongoDB DatabaseNOSQL and MongoDB Database
NOSQL and MongoDB Database
 
Lvm advanced topics
Lvm advanced topicsLvm advanced topics
Lvm advanced topics
 
Web micro-framework BATTLE!
Web micro-framework BATTLE!Web micro-framework BATTLE!
Web micro-framework BATTLE!
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databases
 
Data Modeling for MongoDB
Data Modeling for MongoDBData Modeling for MongoDB
Data Modeling for MongoDB
 
Database Design
Database DesignDatabase Design
Database Design
 
Database language
Database languageDatabase language
Database language
 
Scalability patterns
Scalability patternsScalability patterns
Scalability patterns
 
Database System Architecture
Database System ArchitectureDatabase System Architecture
Database System Architecture
 
Database development life cycle
Database development life cycleDatabase development life cycle
Database development life cycle
 
openCypher: Introducing subqueries
openCypher: Introducing subqueriesopenCypher: Introducing subqueries
openCypher: Introducing subqueries
 
ETL_DWH_ Resume
ETL_DWH_ ResumeETL_DWH_ Resume
ETL_DWH_ Resume
 
UNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdf
UNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdfUNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdf
UNIT 3- DATABASE INTEGRITY AND SECURITY CONCEPTS (1).pdf
 

Similaire à MyBatis 개요와 Java+MyBatis+MySQL 예제

스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 Chanwook Park
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅NAVER D2
 
overview of spring4
overview of spring4overview of spring4
overview of spring4Arawn Park
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기경원 이
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Naver api for android
Naver api for androidNaver api for android
Naver api for androidSangon Lee
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수NAVER D2
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development지수 윤
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Similaire à MyBatis 개요와 Java+MyBatis+MySQL 예제 (20)

스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기 스프링처럼 JDBC 리팩터링하기
스프링처럼 JDBC 리팩터링하기
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Nodejs express
Nodejs expressNodejs express
Nodejs express
 
스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Naver api for android
Naver api for androidNaver api for android
Naver api for android
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Spring Boot 2
Spring Boot 2Spring Boot 2
Spring Boot 2
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 

Plus de 정완 전

Amugona 알고리즘 스터디5회
Amugona 알고리즘 스터디5회Amugona 알고리즘 스터디5회
Amugona 알고리즘 스터디5회정완 전
 
Amugona 알고리즘 스터디4회
Amugona 알고리즘 스터디4회Amugona 알고리즘 스터디4회
Amugona 알고리즘 스터디4회정완 전
 
amugona 스터디4회 세미나결과
amugona 스터디4회 세미나결과amugona 스터디4회 세미나결과
amugona 스터디4회 세미나결과정완 전
 
스터디3회 연결리스트, 삽입정렬 구현하기
스터디3회 연결리스트, 삽입정렬 구현하기스터디3회 연결리스트, 삽입정렬 구현하기
스터디3회 연결리스트, 삽입정렬 구현하기정완 전
 
Amugona study 2회 세미나 결과
Amugona study 2회 세미나 결과Amugona study 2회 세미나 결과
Amugona study 2회 세미나 결과정완 전
 
Amugona stdudy 2nd JJW
Amugona stdudy 2nd JJWAmugona stdudy 2nd JJW
Amugona stdudy 2nd JJW정완 전
 
Amugona study 1회 jjw
Amugona study 1회 jjwAmugona study 1회 jjw
Amugona study 1회 jjw정완 전
 
Amugona study 1회 - 결과
Amugona study 1회 - 결과Amugona study 1회 - 결과
Amugona study 1회 - 결과정완 전
 
Amugona study 1회 jjw
Amugona study 1회 jjwAmugona study 1회 jjw
Amugona study 1회 jjw정완 전
 

Plus de 정완 전 (9)

Amugona 알고리즘 스터디5회
Amugona 알고리즘 스터디5회Amugona 알고리즘 스터디5회
Amugona 알고리즘 스터디5회
 
Amugona 알고리즘 스터디4회
Amugona 알고리즘 스터디4회Amugona 알고리즘 스터디4회
Amugona 알고리즘 스터디4회
 
amugona 스터디4회 세미나결과
amugona 스터디4회 세미나결과amugona 스터디4회 세미나결과
amugona 스터디4회 세미나결과
 
스터디3회 연결리스트, 삽입정렬 구현하기
스터디3회 연결리스트, 삽입정렬 구현하기스터디3회 연결리스트, 삽입정렬 구현하기
스터디3회 연결리스트, 삽입정렬 구현하기
 
Amugona study 2회 세미나 결과
Amugona study 2회 세미나 결과Amugona study 2회 세미나 결과
Amugona study 2회 세미나 결과
 
Amugona stdudy 2nd JJW
Amugona stdudy 2nd JJWAmugona stdudy 2nd JJW
Amugona stdudy 2nd JJW
 
Amugona study 1회 jjw
Amugona study 1회 jjwAmugona study 1회 jjw
Amugona study 1회 jjw
 
Amugona study 1회 - 결과
Amugona study 1회 - 결과Amugona study 1회 - 결과
Amugona study 1회 - 결과
 
Amugona study 1회 jjw
Amugona study 1회 jjwAmugona study 1회 jjw
Amugona study 1회 jjw
 

MyBatis 개요와 Java+MyBatis+MySQL 예제

  • 3. http://blog.naver.com/amelia670 왜 MyBatis인가? 발표 주제를 MyBatis로 선정한 이유 - 실무 기반 프레임워크 2016년 롯데정보통신 프로그래머 채용 시험에서 가산점 Spring, Mybatis, AgularJS, Express 목적 실무에서 활발히 사용되고 있으나 우리는 잘 몰랐던 것들 이번 기회에 알고 가자 Q. 발표를 들으며 드는 궁금한 점과 무엇을 더 할 수 있을지 생각하기 3
  • 5. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시 타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다. 원문 : http://www.mybatis.org/mybatis-3/index.html 번역 : http://www.mybatis.org/mybatis-3/ko/index.html 5
  • 6. http://blog.naver.com/amelia670 원문 : http://www.mybatis.org/mybatis-3/index.html 번역 : http://www.mybatis.org/mybatis-3/ko/index.html MyBatis가 왜 좋은가? MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시 타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다. 왜 MyBatis인가? 소스 코드를 줄인다. 6
  • 7. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스코드를 줄인다. - JDBC를 이용한 Java와 DB 연결하는 코드 public Student findStudentById(int studId) { Student student = null; Connection conn = null; try{ //obtain connection conn = getDatabaseConnection(); String sql = "SELECT * FROM STUDENTS WHERE STUD_ID=?"; //create PreparedStatement PreparedStatement pstmt = conn.prepareStatement(sql); //set input parameters pstmt.setInt(1, studId); ResultSet rs = pstmt.executeQuery(); //fetch results from database and populate into Java objects if(rs.next()) { student = new Student(); student.setStudId(rs.getInt("stud_id")); student.setName(rs.getString("name")); student.setEmail(rs.getString("email")); student.setDob(rs.getDate("dob")); } } catch (SQLException e){ throw new RuntimeException(e); }finally{ //close connection if(conn!= null){ try { conn.close(); } catch (SQLException e){ } } } return student; } public void createStudent(Student student) { Connection conn = null; try{ //obtain connection conn = getDatabaseConnection(); String sql = "INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB) VALUES(?,?,?,?)"; //create a PreparedStatement PreparedStatement pstmt = conn.prepareStatement(sql); //set input parameters pstmt.setInt(1, student.getStudId()); pstmt.setString(2, student.getName()); pstmt.setString(3, student.getEmail()); pstmt.setDate(4, new java.sql.Date(student.getDob().getTime())); pstmt.executeUpdate(); } catch (SQLException e){ throw new RuntimeException(e); }finally{ //close connection if(conn!= null){ try { conn.close(); } catch (SQLException e){ } } } } package com.mybatis3.domain; import java.util.Date; public class Student { private Integer studId; private String name; private String email; private Date dob; // setters and getters } Student 클래스 findStudentById() - 학생 selectcreateStudent() - 학생 insert protected Connection getDatabaseConnection() throws SQLException { try{ Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection ("jdbc:mysql://localhost:3306/test", "root", "admin"); } catch (SQLException e){ throw e; } catch (Exception e){ throw new RuntimeException(e); } } getDatabaseConnection() -DB연결 Student 클래스 7
  • 8. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스코드를 줄인다. - JDBC를 이용한 Java와 DB 연결하는 코드 public Student findStudentById(int studId) { Student student = null; Connection conn = null; try{ //obtain connection conn = getDatabaseConnection(); String sql = "SELECT * FROM STUDENTS WHERE STUD_ID=?"; //create PreparedStatement PreparedStatement pstmt = conn.prepareStatement(sql); //set input parameters pstmt.setInt(1, studId); ResultSet rs = pstmt.executeQuery(); //fetch results from database and populate into Java objects if(rs.next()) { student = new Student(); student.setStudId(rs.getInt("stud_id")); student.setName(rs.getString("name")); student.setEmail(rs.getString("email")); student.setDob(rs.getDate("dob")); } } catch (SQLException e){ throw new RuntimeException(e); }finally{ //close connection if(conn!= null){ try { conn.close(); } catch (SQLException e){ } } } return student; } public void createStudent(Student student) { Connection conn = null; try{ //obtain connection conn = getDatabaseConnection(); String sql = "INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB) VALUES(?,?,?,?)"; //create a PreparedStatement PreparedStatement pstmt = conn.prepareStatement(sql); //set input parameters pstmt.setInt(1, student.getStudId()); pstmt.setString(2, student.getName()); pstmt.setString(3, student.getEmail()); pstmt.setDate(4, new java.sql.Date(student.getDob().getTime())); pstmt.executeUpdate(); } catch (SQLException e){ throw new RuntimeException(e); }finally{ //close connection if(conn!= null){ try { conn.close(); } catch (SQLException e){ } } } } package com.mybatis3.domain; import java.util.Date; public class Student { private Integer studId; private String name; private String email; private Date dob; // setters and getters } Student 클래스 findStudentById() - 학생 selectcreateStudent() - 학생 insert 인풋 파라미터 세팅하고 직접 연결 생성하고 구문 만들고 protected Connection getDatabaseConnection() throws SQLException { try{ Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection ("jdbc:mysql://localhost:3306/test", "root", "admin"); } catch (SQLException e){ throw e; } catch (Exception e){ throw new RuntimeException(e); } } getDatabaseConnection() -DB연결 직접 자원 닫고 인풋 파라미터 세팅하고 직접 연결 생성하고 구문 만들고 직접 자원 닫고 Student 클래스 8
  • 9. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스코드를 줄인다. - JDBC를 이용한 Java와 DB 연결하는 코드 public Student findStudentById(int studId) { Student student = null; Connection conn = null; try{ //obtain connection conn = getDatabaseConnection(); String sql = "SELECT * FROM STUDENTS WHERE STUD_ID=?"; //create PreparedStatement PreparedStatement pstmt = conn.prepareStatement(sql); //set input parameters pstmt.setInt(1, studId); ResultSet rs = pstmt.executeQuery(); //fetch results from database and populate into Java objects if(rs.next()) { student = new Student(); student.setStudId(rs.getInt("stud_id")); student.setName(rs.getString("name")); student.setEmail(rs.getString("email")); student.setDob(rs.getDate("dob")); } } catch (SQLException e){ throw new RuntimeException(e); }finally{ //close connection if(conn!= null){ try { conn.close(); } catch (SQLException e){ } } } return student; } public void createStudent(Student student) { Connection conn = null; try{ //obtain connection conn = getDatabaseConnection(); String sql = "INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB) VALUES(?,?,?,?)"; //create a PreparedStatement PreparedStatement pstmt = conn.prepareStatement(sql); //set input parameters pstmt.setInt(1, student.getStudId()); pstmt.setString(2, student.getName()); pstmt.setString(3, student.getEmail()); pstmt.setDate(4, new java.sql.Date(student.getDob().getTime())); pstmt.executeUpdate(); } catch (SQLException e){ throw new RuntimeException(e); }finally{ //close connection if(conn!= null){ try { conn.close(); } catch (SQLException e){ } } } } package com.mybatis3.domain; import java.util.Date; public class Student { private Integer studId; private String name; private String email; private Date dob; // setters and getters } Student 클래스 findStudentById() - 학생 selectcreateStudent() - 학생 insert protected Connection getDatabaseConnection() throws SQLException { try{ Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection ("jdbc:mysql://localhost:3306/test", "root", "admin"); } catch (SQLException e){ throw e; } catch (Exception e){ throw new RuntimeException(e); } } getDatabaseConnection() -DB연결 Student 클래스 SELET * FROM STUDENTS conn=getDatabaseConnection(); con.close(); PreparedStatement 9
  • 10. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스코드를 줄인다. - MyBatis를 이용한 Java와 DB 연결하는 코드 <select id="findStudentById" parameterType="int" resultType=" Student"> SELECT STUD_ID AS studId, NAME, EMAIL, DOB FROM STUDENTS WHERE STUD_ID=#{Id} </select> <insert id="insertStudent" parameterType="Student"> INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB) VALUES(#{studId},#{name},#{email},#{dob}) </insert> public interface StudentMapper { Student findStudentById(Integer id); void insertStudent(Student student); } SqlSession session = getSqlSessionFactory().openSession(); StudentMapper mapper = session.getMapper(StudentMapper.class); // Select Student by Id Student student = mapper.selectStudentById(1); //To insert a Student record mapper.insertStudent(student); StudentMapper.xml java 코드인터페이스 StudentMapper SQL문을 프로그램에서 분리하여 XML 파일에 별도로 작성 JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거 10
  • 11. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스코드를 줄인다. - MyBatis를 이용한 Java와 DB 연결하는 코드 <select id="findStudentById" parameterType="int" resultType=" Student"> SELECT STUD_ID AS studId, NAME, EMAIL, DOB FROM STUDENTS WHERE STUD_ID=#{Id} </select> <insert id="insertStudent" parameterType="Student"> INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB) VALUES(#{studId},#{name},#{email},#{dob}) </insert> public interface StudentMapper { Student findStudentById(Integer id); void insertStudent(Student student); } SqlSession session = getSqlSessionFactory().openSession(); StudentMapper mapper = session.getMapper(StudentMapper.class); // Select Student by Id Student student = mapper.selectStudentById(1); //To insert a Student record mapper.insertStudent(student); StudentMapper.xml java 코드인터페이스 StudentMapper SQL문을 프로그램에서 분리하여 XML 파일에 별도로 작성 JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거 11
  • 12. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스 코드를 줄인다. 미관상 보기 좋아 마음이 안정됨 = 삽질을 줄인다. 업무를 빨리 끝내고 놀러감 12
  • 13. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스 코드를 줄인다. 미관상 보기 좋아 마음이 안정됨 = 삽질을 줄인다. 개발자 입장업무를 빨리 끝내고 놀러감 13
  • 14. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스 코드를 줄인다. 미관상 보기 좋아 마음이 안정됨 = 삽질을 줄인다. 개발자 입장업무를 빨리 끝내고 놀러감 CEO 입장 ? 14
  • 15. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스 코드를 줄인다. 미관상 보기 좋아 마음이 안정됨 = 삽질을 줄인다. 개발자 입장업무를 빨리 끝내고 놀러감 = 생산성이 향상된다. CEO 입장 같은 제품을 만드는데 드는 재료가 적어 비용 절감 최소의 비용으로 최대의 효용 15
  • 16. http://blog.naver.com/amelia670 왜 MyBatis인가? MyBatis가 왜 좋은가? 소스 코드를 줄인다. + 또 많은 장점들 기존 한계의 극복, 성능, 이식성 ….. 16
  • 17. http://blog.naver.com/amelia670 예제 프로젝트 Java - MyBatis - MySQL 예제 프로젝트로 CRUD 작업 해보기 목표 - mybatis를 이용하여 java 애플리케이션과 mysql 데이터베이 연결하기 - configuration과 mapper를 XML 파일로 작성해보기 환경 windows 8, eclipse 17
  • 18. http://blog.naver.com/amelia670 예제 프로젝트 1. 다운로드 mybatis 3.4.1 https://github.com/mybatis/mybatis-3 MySQL Java connector 5.1.39 - MySQL과 Java를 연결하기 위한 드라이버 - http://dev.mysql.com/downloads/connector/j/ 소스코드 https://github.com/junjw1/mybatis-java-example.git 18
  • 19. http://blog.naver.com/amelia670 예제 프로젝트 2. 데이터베이스 만들기 - localhost에서, jjw라는 DB에, persons라는 테이블 생성 - mysql에 root/apmsetup로 로그인해서, jjw라는 사용자를 추가하고, 모든 권한을 부여한 뒤, jjw가 테이블을 만들었음 19
  • 20. http://blog.naver.com/amelia670 예제 프로젝트 3. 다운로드한 라이브러리(.zip) 압축풀기 4. java project 생성하고, 라이브러리 추가하기 프로젝트 properties - java build path - libraries탭에서 add external JARs…로 두 개의 라이브러리 추가 20
  • 21. http://blog.naver.com/amelia670 예제 프로젝트 5. 4개의 java 파일 작성 - Main.java - Person.java - PersonDAO.java - MyBatisConnectionFactory.java 6. 2개의 xml 파일 작성 - person.xml - config.xml 21