2017-05-17 55 views
0

Spring Boot | MyBatisMyBatis @Mapper聲明

當我嘗試在控制器中聲明一個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; 
} 

我得到這個編譯的類莫名其妙近日,但是,當我嘗試使用messageMapper例如,像messageMapper.insert()因爲它沒有分配任何價值,它給我的NullPointerException。看起來春天由於某種原因不適合我。

回答

0

按照documencation,我覺得@MapperScan是不正確的類,它們不能被自動裝配,因爲他們不是在控制器創建的時間範圍內。當它在Mybatis XML配置文件中定義時,它會加載一個Sql Session Factory Provider,這個地方實際上更有意義,然後它不應該與註釋風格不同。