无法在 Spring Boot |中连接图层MyBatis 应用程序。当Service层使用Mapper时,可能会发生此问题。
控制器方法示例:
@Controller
@RequestMapping("demo")
public class MessageController {
@Autowired
private MessageService messageService;
@RequestMapping(value = "messages", method = RequestMethod.GET)
public String getMessages(ModelMap modelMap) {
modelMap.addAttribute(MESSAGE,
messageService.selectMessages());
return "messages";
}
服务类:
@Service
public class MessageService {
@Autowired // Not sure if I can use Autowired here.
private MessageMapper messageMapper;
public MessageService() {
}
public Collection<Message> selectMessages() { return
messageMapper.selectAll(); }
}
MyBatis Mapper :
@Mapper
public interface MessageMapper {
@Select("select * from message")
Collection<Message> selectAll();
}
更新
感觉我有一些基本的知识错误。可能管理外部库。
这里是maven pom.xml
。看起来有点过载,我在管理不同的spring-boot软件包时面临很多错误。包括自动配置的入门。
pom.xml
这是项目结构:
更新#2
我确信数据库连接运行良好,我可以在Spring Boot正在执行schema.sql
和data.sql
时跟踪MySQL Workbench中的更改。但不知何故,MyBatis映射器方法抛出 NullPointerException ,页面继续退出代码500.似乎他们无法连接。
答案 0 :(得分:1)
MessageService不受spring管理。
您必须使用@Service注释来注释MessageService类(同样,在添加此注释之后,您确实可以在服务类中使用@Autowired)
@Service
public class MessageService {
@Autowired
private MessageMapper messageMapper;
public Collection<Message> selectMessages() {
return messageMapper.selectAll();
}
}
并使用
将其连接到控制器@Autowired
private MessageService messageService
并在像这样的方法中使用它
@RequestMapping(value = "messages", method = RequestMethod.GET)
public String getMessages(ModelMap modelMap) {
modelMap.addAttribute(MESSAGE, messageService.selectMessages());
return "messages";
}