@Configuration
public class MyBatisConfig {
@Autowired
private BasicDataSource basicDataSource;
@Bean
@ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象
public SqlSessionFactoryBean sqlSessionFactory() throws IOException {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// 设置数据源
sqlSessionFactoryBean.setDataSource(basicDataSource);
// 设置mybatis的主配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource mybatisConfigXml = resolver.getResource("classpath:mybatis/SqlMapConfig.xml");
sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
// 设置别名包
sqlSessionFactoryBean.setTypeAliasesPackage("com.zeunpro.robot.approbot.pojo");
//就是这句代码,只能指定单个mapper.xml文件,加通配符的话找不到文件
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mappers/AdminUserMapper.xml"));
return sqlSessionFactoryBean;
}
}
或者用这个:
sessionFactory.setMapperLocations(new Resource[]{resource1, resource2});
你用@InputResource这个注解不行吗,还有在web项目中最后会打成包的,你这样获取resource我是不建议的,一般都是这样获取Thread.currentThread().getContextClassLoader().getResourceAsStream("mappers/AdminUserMapper.xml")
另外一个就是application.properties配置文件没有效果,里面编写东西没有反应,懵逼中!
@ImportResource注解没用,Thread.currentThread().getContextClassLoader().getResourceAsStream("mappers/AdminUserMapper.xml")这种的话,
我有多个怎么弄
是可以那样写的,你参考一下:
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:mappers/*-Mapper.xml"));
public void setMapperLocations (Resource[] mapperLocations)
Set locations of MyBatis mapper files that are going to be merged into the SqlSessionFactory configuration at runtime. This is an alternative to specifying "<sqlmapper>" entries in an MyBatis config file. This property being based on Spring's resource abstraction also allows for specifying resource patterns here: e.g. "classpath*:sqlmap/*-mapper.xml".
sessionFactory.setMapperLocations(new Resource[]{resource1, resource2});
// 只能加载单个文件
//sessionFactory.setMapperLocations(new Resource[]{new ClassPathResource(mapperLocation)});
PathMatchingResourcePatternResolver pathMatchResolver = new PathMatchingResourcePatternResolver();
// 通过通配符获取多个mapper.xml
sessionFactory.setMapperLocations(pathMatchResolver.getResources(mapperLocation));
Resource mybatisConfigXml = resolver.getResource("classpath:mybatis/SqlMapConfig.xml");
改成
Resource[] mybatisConfigXmls = resolver.getResources("classpath:mybatis/*.xml");
resolver.getResource是获取单个资源
resolver.getResources是获取多个资源