본문 바로가기

백엔드/myBatis

MyBatis 3.2) Mapper 방식과 DAO Pattern은 같이 사용할 수 없다.


Mapper 방식은 아래 처럼 사용한다.
1
2
3
4
<bean id="roleMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.openerp.dao.RoleDao">
    <property name="sqlSessionFactory" ref="sqlSessionFactory">
</property></property></bean>


1
2
3
4
5
6
7
pacakge com.openerp.dao
 
public interface RoleDao{
    List<!--?--> listRole(Parameters<string, ?=""> params);
    List<!--?--> listRole(Parameters<string, ?=""> params, int pg, int ps);
}
</string,></string,>

이 경우 Mapper에 등록을 했기때문에 roleMapper 라는 이름으로  bean에 등록이 된다.

"예전부터 사용해오던 DAO 패턴을 같이 쓸 수 없을까?" 라는 궁금증이 생겨 반나절동안 해 보았는데... 안된다.

DAO 패턴도 어쨋든 Spring DI에 등록이 되어야 하는데 같은 클래스가 두개의 이름으로 등록이 되는 현상이 발생된다. 

No qualifying bean of type [com.openerp.dao.RoleDao] is defined: expected single matching bean but found 2: roleDao,roleMapper


이 같은 결론을 얻고 생각을 해보니.. 

DAO Pattern을 그냥 간소화 시켜서 사용하는게 Mapper 방식이네? 


reference)
myBatis DAO Pattern example : http://blog.idleworx.com/2011/09/mybatis-dao-example-code-tutorial.html