빡코

스프링 3.0 + MyBatis 셋팅 본문

Java

스프링 3.0 + MyBatis 셋팅

chris.djang 2019. 11. 14. 19:02

[ SpringMyBatis 프로젝트 생성]

1. 프로젝트 생성

 

Templates: Simple Spring Utility Project 를 선택해준다. 

 

 

package 이름은 다음과 같이 설정해준다. 

 

2.SpringJdbcTemplate 아래 Class 파일들을 복사해서 붙여넣어 준다

 

3.SpringJdbcTemplate 의 pom.xml 파일을 SpringMyBatis 프로젝트위에 덮어씌운다.

4.CustomMain.java Dao2 이름을  Dao로 변경!!

 

[Maven 라이브러리 추가해주기]

 

주소

https://mvnrepository.com/

 

 

Maven Repository: Search/Browse/Explore

Closure Compiler Externs Last Release on Nov 12, 2019

mvnrepository.com

Maven 라이브러리 태그를 pom.xml에 추가해준다. 

1. https://mvnrepository.com/artifact/org.mybatis/mybatis/3.4.6

 

 

2.https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/1.3.2

 

 

pom.xml에서 Tag 설정을 살펴보면 아래와 같다

mvnrepository.com 사이트에서 복사해온 Tag를 pom.xml에서 추가해주면서, 동시에 spring - jdbc의 version ${spring.framework.version}으로 설정하고, 저장을 눌러준다. 

		
		<!-- Spring-jdbc -->
		<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-jdbc</artifactId>
    		<version>${spring.framework.version}</version>
		</dependency>
		
		<!-- mybatis -->
		<dependency>
    		<groupId>org.mybatis</groupId>
    		<artifactId>mybatis</artifactId>
    		<version>3.4.6</version>
		</dependency>
		
		<!-- mybatis-spring -->
		<dependency>
    		<groupId>org.mybatis</groupId>
    		<artifactId>mybatis-spring</artifactId>
   			<version>1.3.2</version>
		</dependency>
		
	</dependencies>
	
	<!-- ojdbc6 관련 주소 별도지정 -->
	<repositories>
		<repository>
			<id>oracle</id>
			<name>Oracle JDBC Repository</name>
			<url>https://repo.spring.io/plugins-release/</url>
		</repository>
	</repositories>

 

com.exe.springmybatis 하위에 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">

<!-- 지금 쓰는 것은 스프링에서는 사용하지 않아도 된다. 그런데 mybatis를 가지고 다른 
프레임에 사용할 경우 아래의 configuration을 작성해 줘야 한다. -->
<configuration>
	<properties>
		<property name="driver" 
		value="oracle.jdbc.driver.OracleDriver"/>
		<property name="url" 
		value="jdbc:oracle:thin:@192.168.16.16:1521:TestDB"/>
		<property name="username" value="SUZI"/>
		<property name="password" value="A123"/>
	</properties>
	
	<environments default="development">
		<environment id="development">
		<transactionManager type="JDBC"/>
		
		<dataSource type="POOLED">
			<property name="driver" value="${driver}"/>
			<property name="url" value="#{url}"/>
			<property name="username" value="${username}"/>
			<property name="password" value="${password}"/>
		</dataSource>
		</environment>
	</environments>
	
	<!-- 현재 실제로 필요한 것! -->
	<mappers>
		<mapper resource="com/exe/mapper/customMapper.xml"/>
	</mappers>
</configuration>


 

src/main/java 폴더 아래 com.exe.mapper 패키지를 생성후 cutomerMapper.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">

<!-- 실제 회사에서는 namespace는 패키지 이름을 사용한다. -->
<mapper namespace="com.exe.mapper">

<!-- 2.0의 parameterClass >> 3.0에서는 parameterType으로 변경!!-->
<insert id="insert" parameterType="com.exe.springmybatis.CustomDTO">
	insert into custom (id,name,age) 
	values (#{id},#{name},#{age})
</insert>
<!-- resultType은 반환값  -->
<select id="list" resultType="com.exe.springmybatis.CustomDTO">
	select id,name,age from custom
</select>

<!-- id를 받아서 한개의 데이터 가지고 오기 -->
<select id="listOne" parameterType="int"
	resultType="com.exe.springmybatis.CustomDTO"> 
	select id,name,age from custom
	where id=#{id}
</select>

<!-- 수정 -->
<update id="update" parameterType="com.exe.springmybatis.CustomDTO">
	update custom set name=#{name}, age=#{age} 
	where id=#{id}
</update>

<delete id="delete" parameterType="int">
	delete custom where id=#{id}
</delete>





</mapper>

 

이제부터 app-context.xml 파일을 설정해보면, 아래와 같다. 기존에 존재하던 app-context.xml 파일을

src/main/java 폴더에 덮어씌우면 씌우고 진행한다.

<?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 
	https://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context 
	https://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<description>Example configuration to get you started.</description>

	<context:component-scan base-package="com.exe.springmybatis" />
	
	<bean id="customDAO" class="com.exe.springmybatis.CustomDAO">
		<property name="sessionTemplate" ref="sessionTemplate"></property>
	</bean>
	
	<bean id="sessionTemplate"
	class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="sessionFactory"/>
	</bean>
	
	<bean id="sessionFactory"
	class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="configLocation"
		value="classpath:/com/exe/springmybatis/mybatis-config.xml"/>
	</bean>
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
	destroy-method="close"
	p:driverClassName="oracle.jdbc.driver.OracleDriver"
	p:url="jdbc:oracle:thin:@192.168.16.16:1521:TestDB"
	p:username="SUZI"
	p:password="A123"/>
	
</beans>

 

CustomDAO 

//mybast DAO
package com.exe.springmybatis;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.mybatis.spring.SqlSessionTemplate;

public class CustomDAO {

	/*
	//이전 메소드로 초기화 방법
	private DataSource dataSource;
	public void setDataSource(DataSource dataSource) { 
		this.dataSource = dataSource;
	}
	*/
	
	//app-context에서 sessionTemplate 을 받아야 한다.
	private SqlSessionTemplate sessionTemplate;
	public void setSessionTemplate(SqlSessionTemplate sessionTemplate) { 
		this.sessionTemplate = sessionTemplate;
	}
	
	
	public void insertData(CustomDTO dto) {
		
		sessionTemplate.insert("com.exe.mapper.insert",dto);
		
	}

	
	public List<CustomDTO> getList(){
		
		List<CustomDTO> lists = 
				sessionTemplate.selectList("com.exe.mapper.list");
		
		return lists;
		
	}
	
	public CustomDTO getReadData(int id){
	
		CustomDTO dto = 
				sessionTemplate.
				selectOne("com.exe.mapper.listOne",id);
		
		return dto;
		
	}
	
	public void updateData(CustomDTO dto) {
		
		sessionTemplate.update("com.exe.mapper.update",dto);
	}
	
	
	
	public void deleteData(int id) {
		
		sessionTemplate.delete("com.exe.mapper.delete",id);
		
	}
}

CustomDTO

package com.exe.springmybatis;

public class CustomDTO {

	
	private int id;
	private String name;
	private int age;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

	
	
	
}

CustomMain

package com.exe.springmybatis;

import java.util.List;

import org.springframework.context.support.GenericXmlApplicationContext;

public class CustomMain {

	public static void main(String[] args) {
		
		
		//app-context.xml을 먼저 읽어와야한다.
		GenericXmlApplicationContext context = 
			   new GenericXmlApplicationContext("app-context.xml");
		
		CustomDAO dao = (CustomDAO)context.getBean("customDAO");
		
		CustomDTO dto;
		
		//insert
		
		dto = new CustomDTO();
		dto.setId(888);
		dto.setName("김수지666");
		dto.setAge(888);
		
		dao.insertData(dto);
		System.out.println("입력 완료!!");
		
		
		//select 
		List<CustomDTO> lists = dao.getList();
		for(CustomDTO dto1 : lists) {
			
			System.out.printf("%d %s %s \n",
					dto1.getId(),dto1.getName(),dto1.getAge());
			
		}
		
		System.out.println("select 완료!!");
	
		//One select
		dto = dao.getReadData(666);
		if(dto!=null) {
			
			System.out.printf("%d %s %d \n",
					dto.getId(),dto.getName(),dto.getAge());
		
		}
		
		
		//update
		dto = new CustomDTO();
		dto.setId(666);
		dto.setName("으악");
		dto.setAge(33);
		
		dao.updateData(dto);
		
		System.out.println("업데이트 완료");
		
		
		//delete
		dao.deleteData(888);
		System.out.println("삭제완료");
		

	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Java' 카테고리의 다른 글

Spring 3.0 View 셋팅 실습하기  (0) 2019.11.15
Spring 3.0 + Mybatis 셋팅 && 실습  (0) 2019.11.15
Spring 3.0 + jdbc 셋팅 && 실습  (0) 2019.11.15
스프링 3.0 + 웹 개발  (0) 2019.11.14
스프링 3.0 + APO 셋팅 및 실습  (0) 2019.11.14