myBaties 的多个数据源

主要思路:

DataSource --> SqlSessionFactory --> SqlSessionTemplate

第一方式: 

定义多套  DataSource --> SqlSessionFactory --> SqlSessionTemplate

https://blog.csdn.net/u012343297/article/details/78835185

每套放置在不同的 package 下面,使用来确定bean  @Qualifier

 https://blog.csdn.net/neosmith/article/details/61202084

使用 AOP 动态切换

第二种方式:

在不影响原来的一套的设计前提下,增加对另一个库的访问。

1 配置一个新的 SqlSessionTemplate

@Bean(name = "uumsqlSessionTemplate")
	public SqlSessionTemplate uumsqlSessionTemplate() throws Exception {	
	   Properties props = new Properties();
       props.put("driverClassName", driverClassName);
       props.put("url", dbUrl);
       props.put("username", userName);
       props.put("password", password);
       DataSource dataSource = DruidDataSourceFactory.createDataSource(props);
       
	   SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
	   bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/mapping/*.xml"));
	   bean.setDataSource(dataSource);
	   return new SqlSessionTemplate(bean.getObject());
	}

2. 写一个 mapper, 使用 注解@Select 或者 写一个对应的 xml

public interface CustomUUMMapper {
    	@Select("SELECT role.`name` as description, role.`code` as rolename from uum_t_role as role where role.id in " + 
			"(SELECT ur.role_id from uum_r_user_role as ur where ur.user_id in " + 
			"(SELECT u.id from uum_t_user as u where u.username = #{username})" + 
			")")

	List<UUMUserRole> selectUserRolesByName(@Param("username")String username);
    
}

3. 写一个 servcie ,使用上述 mapper, 此过程需要用到 第一步创建的 @bean SqlSessionTemplate

@Service
public class UUMService {
	
	CustomUUMMapper uumMapper;
	
	@Autowired
	@Qualifier("uumsqlSessionTemplate")
	SqlSessionTemplate sqlUUMSessionTemplate;
	
	/**
	 * 
	 */	
	@PostConstruct
	public void init() {		
		sqlUUMSessionTemplate.getConfiguration().addMapper(CustomUUMMapper.class);
		uumMapper = sqlUUMSessionTemplate.getMapper(CustomUUMMapper.class);
	}
	
	/**
	 * 
	 * @param name
	 * @return
	 */
	public List<UUMUserRole> getAllRolesByUserName(String name){
		return uumMapper.selectUserRolesByName(name);
	}
}

  Done......

猜你喜欢

转载自www.cnblogs.com/iiiDragon/p/9187314.html