我添加了一项服务以通过@Autowired 获取 CityMapper,但它失败了。我更改了一些内容,如下所示:
@SpringBootApplication
public class SampleMybatisApplication implements CommandLineRunner {
@Autowired
private CityService cityService;
public static void main(String[] args) {
SpringApplication.run(SampleMybatisApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println(this.cityService.getCityById(1L));
}
}
添加服务:
public interface CityService {
City getCityById(Long id);
}
它的实现:
@Service
public class CityServiceImpl implements CityService {
@Autowired
private CityMapper cityMapper;
@Override
public City getCityById(Long id) {
City city = null;
try{
city = cityMapper.selectCityById(id);
// maybe, I want to do something else over here.
}catch (Exception e) {
e.printStackTrace();
}
return city;
}
}
和 CityMapper :
@Repository
public class CityMapper {
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
public City selectCityById(long id) {
return this.sqlSessionTemplate.selectOne("selectCityById", id);
}
}
并且错误显示:
2016-04-09 16:38:47.400 ERROR 2017 --- [ main] o.s.boot.SpringApplication : Application startup failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:795) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:763) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:356) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:295) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1112) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1101) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
at sample.mybatis.SampleMybatisApplication.main(SampleMybatisApplication.java:35) [classes/:na]
Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): sample.mybatis.service.CityService.getCityById
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:196) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:44) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52) ~[mybatis-3.3.0.jar:3.3.0]
at com.sun.proxy.$Proxy35.getCityById(Unknown Source) ~[na:na]
at sample.mybatis.SampleMybatisApplication.run(SampleMybatisApplication.java:40) [classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]