springmvc和mybatis结合 可以直接把用mybatis写的接口注入到service层

http://bbs.csdn.net/topics/390773239

今天我看别人用springmvc和mybatis结合的代码  以前我用SSH框架的 
发现了个问题 
public interface MmMapper {
public List<HashMap<String, Object>> mmQueryByPage(@Param("mm")HashMap<String, Object> params);
}


@Service
public class MmServiceImpl implements IMmService{

@Autowired
private MmMapper mmMapper;
.....................省略
}
看这个代码的意思就是直接把用mybatis写的dao接口直接注入到service层了

我记得以前写SSH用hibernate要先写个接口  然后写这个接口与数据库打交道的具体实现类的啊 

难道mybatis不要具体写实现类吗
比如
public User findUserById(String id) {
return (User) this.getSqlSession().selectOne("cn.test.mybatis.domain.User.selectUserById", id);
}

难道mybatis智能到只要写接口 框架就做完了具体实现类吗  mybatis是怎么做到的呢



MapperScannerConfigurer这种方式不需要写dao,只要保证接口和配置文件一致就可以了,会自动扫描的。


好吧刚理解错,应该说的是这个吧

Java code
?
1
2
3
4
public  interface  CategoryMapper {
     @Select ( "SELECT * FROM category WHERE name=#{name}" )
     Category findById(String name);
}
spring配置
XML/HTML code
?
1
2
3
< bean  class = "org.mybatis.spring.mapper.MapperScannerConfigurer" >
     < property  name = "basePackage"  value = "xx.xx.mapper"  />
</ bean >
然后MyBatis会根据这些动态生成实现类的

好吧刚理解错,应该说的是这个吧
Java code
?
1
2
3
4
public  interface  CategoryMapper {
     @Select ( "SELECT * FROM category WHERE name=#{name}" )
     Category findById(String name);
}
spring配置
XML/HTML code
?
1
2
3
< bean  class = "org.mybatis.spring.mapper.MapperScannerConfigurer" >
     < property  name = "basePackage"  value = "xx.xx.mapper"  />
</ bean >
然后MyBatis会根据这些动态生成实现类的
哦 难怪啊  我说为啥dao层的接口不要具体的实现类呢


MapperScannerConfigurer的作用是:springMVC在加载xml生成上下文环境的时候,会自动扫描制定位置的Mapper接口,然后自动生成代理类,实现接口内容。这样在调用接口的时候,实际上是通过代理类去调用mybatis的xml中的sql语句。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值