SlideShare a Scribd company logo
스프링프레임워크 & 마이바티스
(Spring Framework, MyBatis)
7-11. Spring MyBatis – PlatformTransactionManager를 이용한 프로
그래밍적 트랜잭션 처리예제
[Customer.java]
package onj.edu.jdbc2;
public class Customer {
private Integer id;
private String name;
private Integer age;
public Integer getId() {return id;}
public void setId(Integer id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
[CustomerDao.java]
package onj.edu.jdbc2;
import java.util.List;
import onj.edu.jdbc2.Customer;
public interface CustomerDao {
public int createCustomer(Customer customer);
public int deleteCustomer(Customer customer);
public int updateCustomer(Customer customer);
public Customer getCustomer(Integer id);
public List<Customer> getListCustomer();
}
[CustomerDaoImpl.java]
package onj.edu.jdbc2;
public class CustomerDaoImpl implements CustomerDao {
@Resource(name = "sqlSession")
private SqlSession sqlSessionTemplate;
@Override
public int createCustomer(Customer customer) {
CustomerDao customerDao =
sqlSessionTemplate.getMapper(CustomerDao.class);
return customerDao.createCustomer(customer);
}
@Override
public Customer getCustomer(Integer id) {
CustomerDao customerDao =
sqlSessionTemplate.getMapper(CustomerDao.class);
return customerDao.getCustomer(id);
}
@Override
public List<Customer> getListCustomer() {
CustomerDao customerDao customerDao =
sqlSessionTemplate.getMapper(CustomerDao.class);
return customerDao.getListCustomer();
}
@Override
public int deleteCustomer(Customer customer) {
CustomerDao customerDao =
sqlSessionTemplate.getMapper(CustomerDao.class);
return customerDao.deleteCustomer(customer);
}
@Override
public int updateCustomer(Customer customer) {
CustomerDao customerDao =
sqlSessionTemplate.getMapper(CustomerDao.class);
return customerDao.updateCustomer(customer);
}
}
[CustomerTest.java]
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:context/appcontext-mybatis3.xml")
public class CustomerTest {
@Autowired
private CustomerDao customerDao;
@Autowired
private PlatformTransactionManager transactionManager;
DefaultTransactionDefinition def = null;
TransactionStatus status = null;
//PlatformTransactionManager 이용 수동으로 트랜잭션을 다루는 방법
@Test
public void test() {
try {
def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
status = transactionManager.getTransaction(def);
Customer customer = new Customer();
customer.setAge(30);
customer.setId(30);
customer.setName("오라클자바30");
int cnt = customerDao.createCustomer(customer);
System.out.println("<<<<< 30번 Insert OK");
customer.setId(31);
cnt = customerDao.createCustomer(customer);
System.out.println("<<<<< 31번 Insert OK");
customer = new Customer(); customer.setAge(99);
customer.setId(30);
customer.setName("30번:오라클자바커");
cnt = customerDao.updateCustomer(customer);
System.out.println(">>>>> 30번 Update OK ---> " + cnt);
customer = new Customer();
customer.setId(31);
int deleteCnt = customerDao.deleteCustomer(customer);
System.out.println("삭제건수 = " + deleteCnt);
System.out.println(">>>>> 31번 Delete OK");
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
}
}
}
[context/appcontext-mybatis.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd“>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:onj" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis/sqlmap-config2.xml" />
<property name="mapperLocations" value="classpath:mybatis/mappers/customer.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="customerDao" class="onj.edu.jdbc2.CustomerDaoImpl" />
</beans>
[mybatis/sqlmap-config2.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>
<typeAliases>
<typeAlias
type="onj.edu.jdbc2.Customer"
alias="customer" />
</typeAliases>
</configuration>
[mybatis/mappers/customer.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper3.0//EN"
http://mybatis.org/dtd/mybatis-3-mapper.dtd>
<mapper namespace="onj.edu.jdbc2.CustomerDao">
<resultMap type="customer" id="customerid">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
</resultMap>
<select id="getCustomer" parameterType="int" resultMap="customerid">
SELECT * FROM CUSTOMER WHERE ID = #{id}
</select>
<select id="getListCustomer“ resultMap="customerid">
SELECT * FROM CUSTOMER
</select>
<insert id="createCustomer" parameterType="onj.edu.jdbc2.Customer">
INSERT INTO CUSTOMER(ID, NAME, AGE) VALUES (#{id},#{name},#{age})
</insert>
<update id="updateCustomer" parameterType="onj.edu.jdbc2.Customer">
UPDATE CUSTOMER SET AGE = #{age},
NAME = #{name} WHERE ID = #{id}
</update>
<delete id="deleteCustomer" parameterType="onj.edu.jdbc2.Customer">
DELETE FROM CUSTOMER WHERE ID = #{id}
</delete>
</mapper>

More Related Content

PDF
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
PDF
Demystifying Drupal AJAX Callback Commands
PDF
Demystifying AJAX Callback Commands in Drupal 8
PDF
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
PDF
Drupal8Day: Demystifying Drupal 8 Ajax Callback commands
PDF
spring-tutorial
PDF
Simple Jdbc With Spring 2.5
PDF
Тестирование на Android с Dagger 2
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
Demystifying Drupal AJAX Callback Commands
Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
Drupal8Day: Demystifying Drupal 8 Ajax Callback commands
spring-tutorial
Simple Jdbc With Spring 2.5
Тестирование на Android с Dagger 2

What's hot (20)

PDF
Lecture17
PPT
Jsp/Servlet
PDF
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
PDF
Tomcat连接池配置方法V2.1
PDF
L2 Web App Development Guest Lecture At University of Surrey 20/11/09
PPT
JavaScript
PDF
Advanced java practical semester 6_computer science
PDF
What's new in Android O
PDF
React lecture
PPTX
Test and profile your Windows Phone 8 App
PDF
Why Kotlin - Apalon Kotlin Sprint Part 1
PDF
Graphql, REST and Apollo
PPT
Spring and Cloud Foundry; a Marriage Made in Heaven
PDF
Android - Saving data
PPTX
Data binding в массы! (1.2)
PDF
Backendless apps
PDF
Anton Minashkin Dagger 2 light
PPT
Sqlapi0.1
PPTX
Behavioral pattern 4
PDF
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Lecture17
Jsp/Servlet
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Tomcat连接池配置方法V2.1
L2 Web App Development Guest Lecture At University of Surrey 20/11/09
JavaScript
Advanced java practical semester 6_computer science
What's new in Android O
React lecture
Test and profile your Windows Phone 8 App
Why Kotlin - Apalon Kotlin Sprint Part 1
Graphql, REST and Apollo
Spring and Cloud Foundry; a Marriage Made in Heaven
Android - Saving data
Data binding в массы! (1.2)
Backendless apps
Anton Minashkin Dagger 2 light
Sqlapi0.1
Behavioral pattern 4
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ad

Viewers also liked (20)

PDF
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#31.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#29.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
PDF
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
PDF
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
PDF
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
PDF
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
PDF
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
PDF
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
PDF
#11.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원학원,재직자/실업자교육학원,스프링교육,마이바...
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#31.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#29.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
#11.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원학원,재직자/실업자교육학원,스프링교육,마이바...
Ad

Similar to #36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구로IT교육학원추천 (20)

PDF
Creating a Facebook Clone - Part XXVIII.pdf
PDF
PWA night vol.11 20191218
PDF
JavaScript Refactoring
PDF
The Ring programming language version 1.6 book - Part 46 of 189
PDF
The Ring programming language version 1.2 book - Part 32 of 84
PDF
Advanced Java - Practical File
DOC
code for quiz in my sql
PPTX
Imagine a world without mocks
PDF
OOP_Activity 1_ An Activty about code.pdf
PPTX
Применение шаблона проектирования MVVM при разработке архитектуры Windows Pho...
PDF
The Ring programming language version 1.5.3 book - Part 80 of 184
PDF
Griffon @ Svwjug
PDF
생산적인 개발을 위한 지속적인 테스트
PDF
Asp.net state management
PDF
Modern Android Architecture
DOCX
Quest 1 define a class batsman with the following specifications
PPTX
Powering Heap With PostgreSQL And CitusDB (PGConf Silicon Valley 2015)
DOCX
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
PDF
Practical Model View Programming (Roadshow Version)
PDF
Creating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXVIII.pdf
PWA night vol.11 20191218
JavaScript Refactoring
The Ring programming language version 1.6 book - Part 46 of 189
The Ring programming language version 1.2 book - Part 32 of 84
Advanced Java - Practical File
code for quiz in my sql
Imagine a world without mocks
OOP_Activity 1_ An Activty about code.pdf
Применение шаблона проектирования MVVM при разработке архитектуры Windows Pho...
The Ring programming language version 1.5.3 book - Part 80 of 184
Griffon @ Svwjug
생산적인 개발을 위한 지속적인 테스트
Asp.net state management
Modern Android Architecture
Quest 1 define a class batsman with the following specifications
Powering Heap With PostgreSQL And CitusDB (PGConf Silicon Valley 2015)
Version1.0 StartHTML000000232 EndHTML000065057 StartFragment0000.docx
Practical Model View Programming (Roadshow Version)
Creating a Facebook Clone - Part XXIX - Transcript.pdf

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

PDF
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
PDF
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
PDF
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
PPTX
[IT교육/IT학원]Develope를 위한 IT실무교육
PPTX
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
PPTX
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
PPTX
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
PPTX
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
PPTX
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
PDF
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
PDF
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
PPTX
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
PPTX
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
PPTX
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
PDF
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
PPTX
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
PPTX
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
PPTX
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
[IT교육/IT학원]Develope를 위한 IT실무교육
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]

Recently uploaded (20)

PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
Cell Types and Its function , kingdom of life
PDF
Classroom Observation Tools for Teachers
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
master seminar digital applications in india
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
Complications of Minimal Access Surgery at WLH
PDF
Insiders guide to clinical Medicine.pdf
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
Sports Quiz easy sports quiz sports quiz
PDF
RMMM.pdf make it easy to upload and study
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
Basic Mud Logging Guide for educational purpose
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Cell Types and Its function , kingdom of life
Classroom Observation Tools for Teachers
human mycosis Human fungal infections are called human mycosis..pptx
O7-L3 Supply Chain Operations - ICLT Program
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
master seminar digital applications in india
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Renaissance Architecture: A Journey from Faith to Humanism
O5-L3 Freight Transport Ops (International) V1.pdf
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Complications of Minimal Access Surgery at WLH
Insiders guide to clinical Medicine.pdf
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
Sports Quiz easy sports quiz sports quiz
RMMM.pdf make it easy to upload and study
Module 4: Burden of Disease Tutorial Slides S2 2025
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Basic Mud Logging Guide for educational purpose

#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구로IT교육학원추천

  • 1. 스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis) 7-11. Spring MyBatis – PlatformTransactionManager를 이용한 프로 그래밍적 트랜잭션 처리예제 [Customer.java] package onj.edu.jdbc2; public class Customer { private Integer id; private String name; private Integer age; public Integer getId() {return id;} public void setId(Integer id) {this.id = id;} public String getName() {return name;} public void setName(String name) {this.name = name;} public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } [CustomerDao.java]
  • 2. package onj.edu.jdbc2; import java.util.List; import onj.edu.jdbc2.Customer; public interface CustomerDao { public int createCustomer(Customer customer); public int deleteCustomer(Customer customer); public int updateCustomer(Customer customer); public Customer getCustomer(Integer id); public List<Customer> getListCustomer(); } [CustomerDaoImpl.java] package onj.edu.jdbc2; public class CustomerDaoImpl implements CustomerDao { @Resource(name = "sqlSession") private SqlSession sqlSessionTemplate; @Override public int createCustomer(Customer customer) { CustomerDao customerDao = sqlSessionTemplate.getMapper(CustomerDao.class); return customerDao.createCustomer(customer); } @Override public Customer getCustomer(Integer id) { CustomerDao customerDao = sqlSessionTemplate.getMapper(CustomerDao.class); return customerDao.getCustomer(id); } @Override public List<Customer> getListCustomer() { CustomerDao customerDao customerDao = sqlSessionTemplate.getMapper(CustomerDao.class); return customerDao.getListCustomer();
  • 3. } @Override public int deleteCustomer(Customer customer) { CustomerDao customerDao = sqlSessionTemplate.getMapper(CustomerDao.class); return customerDao.deleteCustomer(customer); } @Override public int updateCustomer(Customer customer) { CustomerDao customerDao = sqlSessionTemplate.getMapper(CustomerDao.class); return customerDao.updateCustomer(customer); } } [CustomerTest.java] @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:context/appcontext-mybatis3.xml") public class CustomerTest { @Autowired private CustomerDao customerDao; @Autowired private PlatformTransactionManager transactionManager; DefaultTransactionDefinition def = null; TransactionStatus status = null; //PlatformTransactionManager 이용 수동으로 트랜잭션을 다루는 방법 @Test public void test() { try { def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); status = transactionManager.getTransaction(def); Customer customer = new Customer(); customer.setAge(30); customer.setId(30); customer.setName("오라클자바30");
  • 4. int cnt = customerDao.createCustomer(customer); System.out.println("<<<<< 30번 Insert OK"); customer.setId(31); cnt = customerDao.createCustomer(customer); System.out.println("<<<<< 31번 Insert OK"); customer = new Customer(); customer.setAge(99); customer.setId(30); customer.setName("30번:오라클자바커"); cnt = customerDao.updateCustomer(customer); System.out.println(">>>>> 30번 Update OK ---> " + cnt); customer = new Customer(); customer.setId(31); int deleteCnt = customerDao.deleteCustomer(customer); System.out.println("삭제건수 = " + deleteCnt); System.out.println(">>>>> 31번 Delete OK"); transactionManager.commit(status); } catch (Exception e) { transactionManager.rollback(status); } } } [context/appcontext-mybatis.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd“>
  • 5. <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:onj" /> <property name="username" value="scott" /> <property name="password" value="tiger" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis/sqlmap-config2.xml" /> <property name="mapperLocations" value="classpath:mybatis/mappers/customer.xml" /> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean id="customerDao" class="onj.edu.jdbc2.CustomerDaoImpl" /> </beans> [mybatis/sqlmap-config2.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> <typeAliases> <typeAlias type="onj.edu.jdbc2.Customer" alias="customer" /> </typeAliases> </configuration> [mybatis/mappers/customer.xml] <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper3.0//EN" http://mybatis.org/dtd/mybatis-3-mapper.dtd> <mapper namespace="onj.edu.jdbc2.CustomerDao">
  • 6. <resultMap type="customer" id="customerid"> <result property="id" column="id" /> <result property="name" column="name" /> <result property="age" column="age" /> </resultMap> <select id="getCustomer" parameterType="int" resultMap="customerid"> SELECT * FROM CUSTOMER WHERE ID = #{id} </select> <select id="getListCustomer“ resultMap="customerid"> SELECT * FROM CUSTOMER </select> <insert id="createCustomer" parameterType="onj.edu.jdbc2.Customer"> INSERT INTO CUSTOMER(ID, NAME, AGE) VALUES (#{id},#{name},#{age}) </insert> <update id="updateCustomer" parameterType="onj.edu.jdbc2.Customer"> UPDATE CUSTOMER SET AGE = #{age}, NAME = #{name} WHERE ID = #{id} </update> <delete id="deleteCustomer" parameterType="onj.edu.jdbc2.Customer"> DELETE FROM CUSTOMER WHERE ID = #{id} </delete> </mapper>