
tk.mybatis.spring.mapper.ClassPathMapperScanner Maven / Gradle / Ivy
package tk.mybatis.spring.mapper;
import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.core.env.Environment;
import tk.mybatis.mapper.autoconfigure.MapperProperties;
import tk.mybatis.mapper.mapperhelper.MapperHelper;
import tk.mybatis.mapper.util.StringUtil;
import java.util.Set;
public class ClassPathMapperScanner extends org.mybatis.spring.mapper.ClassPathMapperScanner {
private MapperHelper mapperHelper = new MapperHelper();
public ClassPathMapperScanner(BeanDefinitionRegistry registry) {
super(registry);
}
@Override
public Set doScan(String... basePackages) {
Set beanDefinitions = super.doScan(basePackages);
doAfterScan(beanDefinitions);
return beanDefinitions;
}
protected void doAfterScan(Set beanDefinitions) {
//如果没有注册过接口,就注册默认的Mapper接口
this.mapperHelper.ifEmptyRegisterDefaultInterface();
GenericBeanDefinition definition;
for (BeanDefinitionHolder holder : beanDefinitions) {
definition = (GenericBeanDefinition) holder.getBeanDefinition();
if (StringUtil.isNotEmpty(definition.getBeanClassName())
&& definition.getBeanClassName().equals("org.mybatis.spring.mapper.MapperFactoryBean")) {
definition.setBeanClass(MapperFactoryBean.class);
definition.getPropertyValues().add("mapperHelper", this.mapperHelper);
}
}
}
/**
* 从环境变量中获取 mapper 配置信息
*
* @param environment
*/
public void setMapperProperties(Environment environment) {
MapperProperties mapperProperties = SpringBootBindUtil.bind(environment, MapperProperties.class, MapperProperties.PREFIX);
mapperHelper.setConfig(mapperProperties);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy