|  |      1hxlx OP mybatis 的 dao 为什么使用接口啊?这样子做的好处或者目的是什么啊? | 
|  |      2loshine1992      2015-11-23 23:00:13 +08:00 减少大量重复的代码,由代理对象实现,开发者专注写 sql 就可以了。。 | 
|  |      3hxlx OP @loshine1992 初学者表示不懂啊,为什么这样子就可以减少重复的代码啊?什么代理对象啊?不用接口,开发者就不能专注写sql了吗??请原谅我的无知 | 
|      4Gonster      2015-11-23 23:18:25 +08:00 @hxlx 只写 mybatis xml mapper ,你觉得没有接口你怎么调用它呢? 接口不变可以用不同的实现,更换 mybatis dsl 的 XML mapper ,接口不变上层不受影响。还有就是有接口 mybatis 做 auto-proxy 比较方便吧。 另外如果感兴趣的话可以考虑看一下 https://github.com/mybatis/mybatis-3/blob/master/src/main/java/org/apache/ibatis/binding/MapperProxy.java 一些源码实现,想想你只写了接口和 xml ,你怎么能够通过调用接口就能使用到你没有写的 java 实现类,具体关键字应该是 auto proxy 还有字节码生成, jdk 反射包下有一套实现。还有一些其他的比如用 cglib 和 javassist 的实现等等。 |