我对整个Spring的生态系统都是陌生的。我一直在学习一些教程,能够创建一个Spring Boot应用程序并执行crud操作。然后我开始把这个项目改成mybatis的标准。
我已经尝试了许多其他类似问题的答案,但到目前为止没有一个是有效的。
下面是问题陈述:
//CustomerService.java
package com.crudapp.service;
import com.crudapp.entity.Customer;
import java.util.List;
@Service
public interface CustomerService {
public List<Customer> getAllCustomers();
//I have other methods as well to delete, update and post.
}
实现类实现为:
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerMapper customerMapper;
@Override
public List<Customer> getAllCustomers() {
List<Customer> list = customerMapper.getAllCustomers();
return list;
}
}
我的Mapper类如下所示:
@Mapper
public interface CustomerMapper {
public List<Customer> getAllCustomers();
}
我的Mapper.xml课是:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.crudapp.mapper.CustomerMapper">
<select id="getAllCustomers" resultType="customer">
select * from customers
</select>
</mapper>
最后是我的控制器类:
@RestController
@RequestMapping("/api/v1")
public class CustomerController {
@Autowired
CustomerService customerService;
@RequestMapping(value = "/getAllCustomers", method = RequestMethod.GET)
public List<Customer> getAllCustomers() {
List<Customer> list = customerService.getAllCustomers();
return list;
}
}
我得到的错误是:
描述:
com.crudapp.service.impl.CustomeServiceImpl中的字段CusterMapper需要一个类型com.crudapp.mapper.CustomeMapper的bean,但找不到。
注入点具有以下注释:
行动:
考虑在您的配置中定义一个类型为“com.crudapp.mapper.自定义映射器”的bean。
毫无疑问,错误是直接的。我认为控制器中有两个@Autowired,另一个在服务实现中可能是问题所在。但我的理解是,bean将由框架自动管理。那么,我该如何解决这个问题呢?
更新:通过添加@MapperScan(“com.crudapp.mapper”)
上述错误不再存在,但我得到了这个新错误:
org.springframework.beans.factory.BeanCreationExcema:错误创建名称为
我的主要课程是:
@SpringBootApplication
@MapperScan("com.crudapp.mapper")
public class CrudappApplication {
public static void main(String[] args) {
SpringApplication.run(CrudappApplication.class, args);
}
}
在我的申请中。我拥有的属性文件:
mybatis.config=classpath:mapper/mybatis_config.xml
mybatis.typeAliasesPackage=com.crudapp.entity
mybatis.mapperLocations=classpath*:**/mappers/*.xml
确保在属性文件中有此项
迈巴蒂斯。typeAliasesPackage=com。西瓦拉布斯。演示。域mybatis。mapperLocations=classpath*:**/mappers/*。xml
裁判:https://dzone.com/articles/spring-boot-working-with-mybatis
和MapperScan注释
@SpringBootApplication
@MapperScan("com.sivalabs.demo.mappers")
public class SpringbootMyBatisDemoApplication
{
public static void main(String[] args)
{
SpringApplication.run(SpringbootMyBatisDemoApplication.class, args);
}
}
我试图在Spring Boot中创建一个简单的REST服务。在我使用CrudRepository之前,一切都很好。现在我得到了这个错误- ***应用程序启动失败 描述: 公司中的现场er。Spring靴。io。受雇者EmployeeService需要“company”类型的bean。Spring靴。io。受雇者找不到EmployeeRepo“”。 措施: 考虑定义一个“company”类型的bea
我正在做SpringBoot项目,并遵循一些测试SpringBoot的说明。 当我尝试将mysql DB与项目连接时,服务找不到映射器。 我不知道为什么它找不到映射器... 这是服务代码和 这是映射程序代码 下面的错误是 我将发布我的包裹设置的图片。。。
应用程序启动失败 考虑在您的配置中定义一个类型为'com.service.adminService'的bean。