Spring

myBatis를 이용한 DB연결, CRUD구현

H_eh 2022. 8. 2. 01:13

전체코드

pom.xml

더보기
<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>co.jw.sol</groupId>
   <artifactId>AOP</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <!-- xml에서 사용할 속성들 -->
   <properties>
      <!-- 자바 버전 -->
      <java-version>1.8</java-version>
      <!-- 스프링 버전 -->
      <org.springframework-version>5.1.9.RELEASE</org.springframework-version>
      <!--<org.springframework-version>4.3.25.RELEASE</org.springframework-version> -->
      <org.slf4j-version>1.7.26</org.slf4j-version>
      <ch.qos.logback-version>1.2.3</ch.qos.logback-version>
      <javax.annotation-version>1.3.2</javax.annotation-version>
      <org.aspectj-version>1.9.4</org.aspectj-version>
      <com.oracle-version>11.2.0.3</com.oracle-version>
      <org.apache.commons-version>2.7.0</org.apache.commons-version>
      <org.mybatis-version>3.5.6</org.mybatis-version>
   </properties>

   <!-- Repository 정보 -->
   <repositories>
        <repository>
            <id>oracle</id>
            <name>ORACLE JDBC Repository</name>
            <url>http://maven.jahia.org/maven2</url>
        </repository>
    </repositories>

   <!-- 프로젝트에서 사용할 라이브러리 정보 -->
   <dependencies>
      <!-- spring context -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>
      <!-- slf4j -->
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${org.slf4j-version}</version>
      </dependency>
      <!-- logback -->
      <dependency>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-classic</artifactId>
         <version>${ch.qos.logback-version}</version>
         <exclusions>
            <exclusion>
               <groupId>org.slf4j</groupId>
               <artifactId>slf4j-api</artifactId>
            </exclusion>
         </exclusions>
         <scope>runtime</scope>
      </dependency>
      <!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
      <dependency>
         <groupId>javax.annotation</groupId>
         <artifactId>javax.annotation-api</artifactId>
         <version>${javax.annotation-version}</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
      <dependency>
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjweaver</artifactId>
         <version>${org.aspectj-version}</version>
      </dependency>

      <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-jdbc</artifactId>
         <version>${org.springframework-version}</version>
      </dependency>

      <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.1.0.2</version>
        </dependency>


      <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-dbcp2</artifactId>
         <version>${org.apache.commons-version}</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>${org.mybatis-version}</version>
	</dependency>

	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	    <version>2.0.6</version>
	</dependency>

      
      
   </dependencies>
</project>

 

MyBatis를 위한 설정

BBean.java  :  DB 연결과 sql 연결과 실행하는 객체

package co.bm.jdbc.config;
import ...;

@Configuration
@ComponentScan(basePackages = {"co.bm.jdbc.beans"})
//빈 등록 클래스로 명시하고, 패키지에서 @Component를 스캔한다
public class BBean {

	@Bean
	public BasicDataSource source() {
    //DB연결을 위한 DriverClassName, url, username, password를 저장한 source을 반환한다
		
		BasicDataSource source = new BasicDataSource();
		source.setDriverClassName("oracle.jdbc.OracleDriver");
		source.setUrl("jdbc:oracle:thin:@localhost:1521/xepdb1");
		source.setUsername("BM");
		source.setPassword("bm0301");
		
		return source;
	}
	
	/* mybatis */
	@Bean
	public SqlSessionFactory fac(BasicDataSource source) throws Exception {
    //DB연결을 위한 객체
		
		SqlSessionFactoryBean f = new SqlSessionFactoryBean();
		f.setDataSource(source);
        /* SqlSessionFactory를 위해 먼저 SqlSessionFactoryBean을 설정한다
			SqlSessionFactoryBean 객체를 생성하고, DB연결 설정을 저장한 source을 매개변수로 설정  */
		
		SqlSessionFactory fa = f.getObject();
		return fa;
        //팩토리에서 getObject()을 호출한 결과를 리턴한다
	}
	
	@Bean
	public MapperFactoryBean<MapInterface> mm(SqlSessionFactory factory){
    //쿼리 실행을 위한 객체
		MapperFactoryBean<MapInterface> f = new MapperFactoryBean<MapInterface>(MapInterface.class);
		//쿼리문을 담은 MapInterface 타입의 객체 생성
		f.setSqlSessionFactory(factory);
		return f;
	}
}

 

MapInterface.java

실행할 쿼리들을 담은 메서드를 정의한다

package co.bm.jdbc.mapper;

public interface MapInterface {

	@Select("select num1, str1 from spr_table")
	List<JBean> sel();
	
	@Insert("insert into spr_table(num1, str1) values(#{num1}, #{str1})")
	void in(JBean bean);
	
	@Update("update spr_table set str1=#{str1} where num1=#{num1}")
	void up(JBean bean);
	
	@Delete("delete from spr_table where num1=#{num1}")
	void del(int num1);
}

 

메인클래스

package co.bm.jdbc.main;

public class MjdbcClass {
	public static void main(String[] args) {
		
		AnnotationConfigApplicationContext ctx2 = 
				new AnnotationConfigApplicationContext(BBean.class);
                //BBean.에 정의한 빈 객체를 생성한다
		
		MapInterface m = ctx2.getBean("mm", MapInterface.class); 
        //Mapinteface 타입의 "mm"객체를 m에 저장한다
		
		//삽입
		JBean b1 = new JBean();
		b1.setNum1(2);
		b1.setStr1("세종대왕");
        //JBean 객체를 생성해서 값을 저장한다
		
		m.in(b1);
        // Mapinteface 타입의 "mm"객체의 저장메서드를 호출한다
        
		
		//업데이트
		JBean b2 = new JBean();
		b2.setNum1(3);
		b2.setStr1("단군");
		m.up(b2);
		
		//삭제
		m.del(2);
		
		//출력
		List<JBean> li = m.sel();
		for(JBean b3 : li) {
			System.out.print(b3.getNum1() +" / ");
			System.out.println(b3.getStr1());
		}
		
		ctx2.close();
		
	}
}

 

 

마이바티스 아직 정리가 더 필요하다.

 

728x90
728x90