springbeans.xml 에서 저 p라는 namespace를 체크하면..
기존 아래와 같이
<bean id="" class''>
<property name="" value=""/>
<property name="" value=""/>
</bean>
이렇게 쓰던걸...
<bean id = "" class="" p:url="" p:username="" p:password = "" p:driverClassName = ""/>
이렇게 쓸 수 있다.
자 이제 MyBatis Spring을 쓸 것이다.
기존 MyBatis는 sqlMapConfig.xml파일에 이렇게 적어줬었따..
<!-- DataSource 설정 -->
<!-- 나중에 Spring 연동하면 이부분은 안한다. -->
<!-- db.properties 에 있는 정보들을 아래와같이 넣어준다. -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/> <!-- 런타임에 이부분 치환됨 -->
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
MyBatis Spring는 springbeans.xml에 넣어줄것이다.
values.properties 에 지난번에 MyBatis할 때 썼었던 DB설정값(DB.properties)들을 가져와 넣어준다
#db.driver=oracle.jdbc.OracleDriver
#db.url=jdbc:oracle:thin:@127.0.0.1:1521:xe
#db.username=scott
#db.password=tiger
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/java_db?useUnicode=true&charaterEncoding=utf-8&useSSL=false&serverTimezone=UTC
db.username=scott
db.password=tiger
이후 Springbeans.xml에 아래와 같이 넣어줌
DataSource를 Bean화 시켜주는것이다.
<!-- Aphache DBCP BasicDatasource 클래스를 Bean으로 등록 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
p:driverClassName="${db.driver}"
p:url="${db.url}"
p:username="${db.username}"
p:password="${db.passeord}" />
자 이제 그리고,,
Mybatis에서 있었던,, SqlMapConfig.xml 파일과, XXXMapper.xml 파일을 가져온다.
SqlMapConfig.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>
<!-- VO객체를 설정한다..(클래스 이름이 뭔지 알려주는거지.) -->
<!-- jdbc.user.vo.UserVO 이걸 짧게 쓰기 위해 Alias를 준다.alias="User" -->
<typeAliases>
<typeAlias alias="Book" type="myspring.user.vo.UserVO"/>
</typeAliases>
</configuration>
이걸 Bean에다가 등록해준다..
springbeans.xml
<!-- SqlSessionFactoryBean 클래스를 Bean으로 등록 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:config/SqlMapConfig.xml"/>
<property name="mapperLocations">
<list>
<value>classpath:config/UserMapper.xml</value>
</list>
</property>
</bean>
그리고 SqlSessionTemplate 도 추가해준다.
여기서 주의해야 할 점은 SqlSessionTemplate는 기본 생성자가 없기 때문에
아래와 같이 constructor-arg를 해줘야한다.
<!-- SqlSessionTemplate -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory" />
</bean>
이후 쿼리문 유닛테스트로 날려보자...
package myspring.user.test;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import myspring.user.vo.UserVO;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:config/springbeans.xml")
public class DataSourceTest {
@Autowired
DataSource dataSource;
@Autowired
SqlSessionFactory factory;
@Autowired
SqlSession session;
@Test
public void sql() {
UserVO user = session.selectOne("userNS.selectUserByUserid", "dooly");
System.out.println(user);
}
@Test @Ignore
public void ds() {
System.out.println(factory.getClass().getName());
try {
Connection con = dataSource.getConnection();
System.out.println(con);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
잘 된다....
메이븐오류로 조금 헤맸다.
메이븐 설정이다.
<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>MySpringMVC</groupId>
<artifactId>MySpringMVC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<!-- <scope>test</scope> -->
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.12.RELEASE</version>
<!-- <scope>test</scope> -->
</dependency>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.7.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</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>
<!--https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
</project>
'Dev > [Java]' 카테고리의 다른 글
[Spring] 8. Spring MVC (0) | 2021.02.02 |
---|---|
[Spring] 7. Mapper 써보기 (0) | 2021.02.01 |
[Spring] 4. DI전략 3단계 (0) | 2021.02.01 |
[JAVA공부] 이클립스 단축키 정리 (0) | 2021.01.30 |
[Spring] 2. Constructor Injection, DI전략2 어노테이션 써보기 (0) | 2021.01.29 |