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