springboot项目问题总结

一、web访问问题

先上图:

操作:直接在浏览器访问url,controller中只返回一个字符串。

问题:大概意思就是映射错误,实际就是没扫描到什么东西,我这个项目中呢,每个模块都是一个jar,所以应该是没有引入bean,service,controller以及mapper。

解决:上图

还有两步,一是在serviceImpl类上面加上@service,二就是要在web的pom.xml中添加依赖项目service和serviceImpl,两个不加任何一个都会出错,可以测试。

经过上面的操作,发现还是有错,那是因为没有index.html,如果是controller,他返回的是一个页面,把@Controller改成RestController,将返回字符串。

二、调用API问题

操作:调用该方法,报错是空指针,指示36行。

问题:扫描不到mapper.xml的配置文件(两个java类)。

解决:在上图启动方法中,加上“com.banry.pscm.tenant.persist.dao.config”,也就是上图被注释的那句。

 @Configuration
public class MyBatisConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource(){
        return new org.apache.tomcat.jdbc.pool.DataSource();
    }

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());

        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:com/banry/pscm/tenant/persist/mapper/*.xml"));

        return sqlSessionFactoryBean.getObject();
    }
}
MyBatisConfig
@Configuration
@AutoConfigureAfter(MyBatisConfig.class)
public class MyBatisMapperScannerConfig {
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        mapperScannerConfigurer.setBasePackage("com.banry.pscm.tenant.persist.dao");
        return mapperScannerConfigurer;
    }
}
MyBatisMapperScannerConfig

 三、xml里的sql无效问题

问题描述:测试controller,如果sql写在mapper.xml文件中的方法就说是绑定无效,如果sql是用注解写在mapper里的,就可以。

解决:第一步:选中web项目,右击Run As > Run Configurations,找到Spring Boot App下面运行的该项目,选择右侧classpath,如下图:

第二步:把mapper.xml在的那个包,复制一份到web中,就可以了。

最后:项目中的bean的名称最好和数据库相同,以及mapper.xml中import的bean名称要和项目中自动生成的bean相同。因为我遇到了,所以标注一句。

以上问题的解决办法只是粗略的解决,出现其他问题,还需具体分析,这只是我目前遇到的。

猜你喜欢

转载自www.cnblogs.com/cjblog/p/8963501.html