지난 글에서는 Mybatis란 무엇인가를 알아보았고, 이번 글에서는 Mybatis 와 Spring 을 연동해서 사용하는방법을 알아보자!
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=username
jdbc.password=password
<?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:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!-- 외부 property 파일을 들고옴 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>/WEB-INF/config/db.properties</value>
</property>
</bean>
<!-- DB 커넥센풀 설정 -->
<bean id="dataSource"
class="org.apache.ibatis.datasource.pooled.PooledDataSource">
<property name="driver" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- sqlSessionFactory 객체 생성 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- VO객체의 위치와 별명을 적음 -->
<property name="configLocation" value="classpath:/mybatis/config/mybatisConfig.xml" />
<!-- sql mapper파일 위치를 적음 -->
<property name="mapperLocations" value="classpath:/mybatis/mappers/*.xml" />
</bean>
<!-- sqlSession 객체 생성 -->
<bean id="sqlSession"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
</bean>
</beans>
빈(bean)설정 파일을 만들고 프로퍼티의 정보도 같이 가져오자. ( DataSource, SqlSessionFactory, Sqlsessio객체를 bean으로 설정시 스프링이 자동으로 만들어 준다)
SqlSessionFactory > Sqlsession 이런식으로 객체를 생성 및 주입 한다고 하면 이해하기 쉬울듯하다.
VO 설정파일 (VO 객체와 위치를 설정한다)
<?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">
<!-- MemberVO에 대한 alias를 설정함. -->
<configuration>
<typeAliases>
<typeAlias type="com.myspring.pro27.member.vo.MemberVO" alias="memberVO" />
</typeAliases>
</configuration>
mapper 파일 (실제 SQL문을 작성하는 곳으로 DAO와 연동할수 있게 namespace를 작성해야한다.)
<?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">
<mapper namespace="mapper.member">
<resultMap id="memResult" type="memberVO">
<result property="id" column="id" />
<result property="pwd" column="pwd" />
<result property="name" column="name" />
<result property="email" column="email" />
<result property="joinDate" column="joinDate" />
</resultMap>
<!-- 로그인창에서 입력한 ID와 비밀번호로 회원정보를 조회하는 SQL문을 매퍼파일에 추가 -->
<select id="loginById" parameterType="memberVO" resultType="memberVO">
<![CDATA[
select * from t_member
where id = #{id} and pwd = #{pwd}
]]>
</select>
DAO 클래스
@Repository("memberDAO")
public class MemberDAOImpl implements MemberDAO {
//SqlSession 인터페이스를 주입한다.
@Autowired
private SqlSession sqlSession;
//Service클래스에서 전달된 MemberVO객체를 다시 SQL문으로 전달하여 ID와 비밀번호를 이용해 회원정보를 조회하도록 작성
@Override
public MemberVO loginById(MemberVO memberVO) throws DataAccessException {
//메소드 호출시 전달된 memberVO를 SQL문으로 전달해 입력한 ID와 비밀번호에 대한 회원정보를 조회한후
//MemberVO객체에 담아 반환 받는다.
MemberVO vo = sqlSession.selectOne("mapper.member.loginById", memberVO);
return vo;
}
mapper파일의 SQL문의 id와 동일한 DAO가 실행되어 사용되어 진다.
Sqlsession의 인터페이스가 @Autowired로 자동으로 주입된다.
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
STS (Spring Tool Suite) 설치 방법 (0) | 2021.02.09 |
---|---|
What is JUnit? (Unit test framework for java) (0) | 2021.02.03 |
What is Mybatis (마이바티스 이란?) - (1) (0) | 2021.01.30 |
What is Maven? (메이븐이란?) (0) | 2021.01.21 |