기록/BACKEND

[Spring] MyBatis Mapper interface 자동 주입

5월._. 2022. 4. 27.
728x90

[Spring] MyBatis Mapper interface 자동 주입

[이 글] 보다 조금 더 간단해진 방식이다. sqlSession을 직접 주입하지 않고 Mapper 위치에서 스캔하도록 한다.

1. root-context.xml

sqlSession bean 설정부분을 지우고 대신 mybatis-spring:scan에 mapper interface가 있는 위치를 지정한다.

<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="mapperLocations" value="classpath:mapper/*.xml" />
<property name="typeAliasesPackage" value="com.___.____.model" />
</bean>
<mybatis-spring:scan base-package="com.___.____.model.mapper"/>

 

2. interface Mapper.java

@Mapper 어노테이션을 붙인다. 붙이지 않아도 잘 스캔되기는 한다.

@Mapper
public interface MemberMapper {
int idCheck(String id) throws Exception;
void registerMember(MemberDto memberDto) throws Exception;
MemberDto login(Map<String, String> map) throws Exception;
}

 

3. Service.java

sqlSession 대신 Mapper를 직접 사용한다.

@Service
public class MemberServiceImpl implements MemberService {
@Autowired
private MemberMapper memberMapper;
@Override
public int idCheck(String id) throws Exception {
return memberMapper.idCheck(id);
}
@Override
public void registerMember(MemberDto memberDto) throws Exception {
memberMapper.registerMember(memberDto);
}
@Override
public MemberDto login(Map<String, String> map) throws Exception {
return memberMapper.login(map);
}
}

'기록 > BACKEND' 카테고리의 다른 글

[Spring] REST API  (0) 2022.04.29
[Spring] REST API(feat.jackson-databind, json)  (0) 2022.04.28
[Spring] MyBatis 설정(feat.Spring)  (0) 2022.04.26
[WEB] MyBatis 설정  (0) 2022.04.25
[Spring] Interceptor  (0) 2022.04.24

댓글