MyBatis @Mapper 声明
MyBatis @Mapper declaration
Spring开机| MyBatis
当我尝试在控制器中声明一个 mybatis 映射器时,它带有 IDE 的下划线并且无法编译。
@Controller
@RequestMapping("demo")
@MapperScan("com.sample.mapper")
public class MessageController {
private static final String MESSAGE = "message";
private static final String INDEX = "index";
@Autowired
private MessageMapper messageMapper;
@RequestMapping("printMessage/{message}")
public String printMessage(ModelMap modelMap) {
modelMap.addAttribute(MESSAGE, "M");
return INDEX;
}
@RequestMapping("printHello")
public String printHello(ModelMap modelMap) {
modelMap.addAttribute(MESSAGE, "Hello, ");
return INDEX;
}
我最近以某种方式编译了这个 class,但是,当我尝试使用 messageMapper 实例时,例如 messageMapper.insert()
因为它没有分配任何值,它给了我 NullPointerException。似乎 Spring 出于某种原因对我不起作用。
根据 documencation,我认为 @MapperScan
不正确 class,它们不能自动装配,因为它们不在控制器创建时的上下文中。在Mybatis XML config文件中定义的时候,加载了一个Sql Session Factory Provider,这个地方其实更有意义,那么应该和annotations风格不一样。
Spring开机| MyBatis
当我尝试在控制器中声明一个 mybatis 映射器时,它带有 IDE 的下划线并且无法编译。
@Controller
@RequestMapping("demo")
@MapperScan("com.sample.mapper")
public class MessageController {
private static final String MESSAGE = "message";
private static final String INDEX = "index";
@Autowired
private MessageMapper messageMapper;
@RequestMapping("printMessage/{message}")
public String printMessage(ModelMap modelMap) {
modelMap.addAttribute(MESSAGE, "M");
return INDEX;
}
@RequestMapping("printHello")
public String printHello(ModelMap modelMap) {
modelMap.addAttribute(MESSAGE, "Hello, ");
return INDEX;
}
我最近以某种方式编译了这个 class,但是,当我尝试使用 messageMapper 实例时,例如 messageMapper.insert()
因为它没有分配任何值,它给了我 NullPointerException。似乎 Spring 出于某种原因对我不起作用。
根据 documencation,我认为 @MapperScan
不正确 class,它们不能自动装配,因为它们不在控制器创建时的上下文中。在Mybatis XML config文件中定义的时候,加载了一个Sql Session Factory Provider,这个地方其实更有意义,那么应该和annotations风格不一样。