Spring启动| MyBatis 项目结构不能连线层
Spring Boot | MyBatis project structure can't wire layers
无法在 Spring 引导中连接图层 | 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";
}
服务class:
@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();
}
更新
感觉我犯了一些基于基础知识的错误。可能管理外部库。
这是专家 pom.xml
。看起来有点过载,我在管理不同的 spring-boot 包时遇到了很多错误。包含用于自动配置的启动器。
pom.xml
项目结构如下:
更新#2
我确定数据库连接运行良好,我能够在 MySQL Workbench 中跟踪更改,而 Spring 引导正在执行 schema.sql
和 data.sql
。但不知何故,MyBatis 映射器方法抛出 NullPointerException 并且页面继续执行退出代码 500。似乎它们无法连接。
MessageService 不由 spring 管理。
您必须使用 @Service 注释来注释 MessageService class(此外,添加此注释后您确实可以在服务中使用 @Autowired class)
@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";
}
无法在 Spring 引导中连接图层 | 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";
}
服务class:
@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();
}
更新
感觉我犯了一些基于基础知识的错误。可能管理外部库。
这是专家 pom.xml
。看起来有点过载,我在管理不同的 spring-boot 包时遇到了很多错误。包含用于自动配置的启动器。
pom.xml
项目结构如下:
更新#2
我确定数据库连接运行良好,我能够在 MySQL Workbench 中跟踪更改,而 Spring 引导正在执行 schema.sql
和 data.sql
。但不知何故,MyBatis 映射器方法抛出 NullPointerException 并且页面继续执行退出代码 500。似乎它们无法连接。
MessageService 不由 spring 管理。
您必须使用 @Service 注释来注释 MessageService class(此外,添加此注释后您确实可以在服务中使用 @Autowired class)
@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";
}