티스토리 뷰

spring(boot)

[mybatis]두가지 방식와 다중DB

수학소년 2024. 10. 25. 23:58

1. @Autowired로 SqlSession을 불러다가 sqlSession를 이용

@Repository
public class BoardDao {

	@Autowired
	private SqlSession sqlSession;
	
	public List<Board> select(){
		return sqlSession.selectList("boardselect");
	}
}
<beans:beans .............>
	<beans:bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSession">
		<beans:property name="configLocation" value="classpath:mybatis-config.xml"></beans:property>
		<beans:property name="mapperLocations" value="classpath:mappers/**/*.xml" />
		<beans:property name="dataSource" ref="dataSource"></beans:property>
		<beans:property name="interval" value="3000" />
	</beans:bean>
    
    <beans:bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSessionTemplate">
		<beans:constructor-arg ref="sqlSession"></beans:constructor-arg>
	</beans:bean>
</beans:beans>

다중DB 연결은 연결DB마다 sqlSession, sqlSessionTemplate를 만들어서

@Autowired로 끌어올때 다르게 만들었던 id값으로 끌어다가 쓰면 그 DB에서 쿼리가 돔

 

2. interface SampleDao에 @Mapper 선언하고 설정파일에서 mapper.xml과 연결

@Mapper
public interface BoardDao {

	public List<Board> select();
}
<beans:bean ........>
	<beans:bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSession">
		<beans:property name="configLocation" value="classpath:mybatis-config.xml"></beans:property>
		<beans:property name="mapperLocations" value="classpath:mappers/oracle/*.xml" />
		<beans:property name="dataSource" ref="dataSource1"></beans:property>
		<beans:property name="interval" value="3000" />
	</beans:bean>
    
    <mybatis-spring:scan base-package="iris.oracle" factory-ref="sqlSession"/>
</beans:bean>

 

다중DB를 쓰려면

<beans:bean ........>
	<beans:bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSession">
		<beans:property name="configLocation" value="classpath:mybatis-config.xml"></beans:property>
		<beans:property name="mapperLocations" value="classpath:mappers/oracle/*.xml" />
		<beans:property name="dataSource" ref="dataSource1"></beans:property>
		<beans:property name="interval" value="3000" />
	</beans:bean>
	<beans:bean class="iris.RefreshableSqlSessionFactoryBean" id="sqlSession2">
		<beans:property name="configLocation" value="classpath:mybatis-config.xml"></beans:property>
		<beans:property name="mapperLocations" value="classpath:mappers/maria/*.xml" />
		<beans:property name="dataSource" ref="dataSource2"></beans:property>
		<beans:property name="interval" value="3000" />
	</beans:bean>
    
	<mybatis-spring:scan base-package="iris.oracle" factory-ref="sqlSession1"/>
	<mybatis-spring:scan base-package="iris.maria" factory-ref="sqlSession2"/>
</beans:bean>

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함