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风格不一样。