第一篇文章 总结Struts2+Spring+MyBaties整合 里说到,“接口方面,之前学习MyBaties时是写了Mapper接口来映射方法。这里不再使用”。后来再深入研究了一下,发现还是需要使用这个Mapper接口,因为Spring对它作了很好的支持。
在Spring-mybatis的 官方中文文档 里第六章说到,在spring的配置文件里可以配置一个接口映射器。其中我总结出一个比较方便的配置方式:
<!-- 配置注入映射器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.tanjiay.mbt.mapper" /> </bean>
在org.mybatis.spring.mapper.MapperScannerConfigurer里,有一个basePackage的属性我们可以配置,配置后它会自动扫描 这个值所表示的包下的Mapper接口。
而除了配上这个之外,还需要把model的映射文件里的namespace配置为接口的路径
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.tanjiay.mbt.mapper.StudentMapper">
...
</..>
这样Spring就会自动管理这个接口的实例,在需要使用它的时候直接注入就行了。
@Resource private UserMapper userMapper; public User getFromUsernameAndPassword(String username, String password) { Map<String,Object> map = new HashMap<String,Object>(); map.put("username", username); map.put("password", password); return userMapper.getFromUsernameAndPassword(map); }