기록/BACKEND

[Spring] MyBatis Mapper interface 자동 주입

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

[이 글] 보다 조금 더 간단해진 방식이다. 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

댓글