V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hxlx
V2EX  ›  程序员

mybatis 为什么的 dao 为什么试用接口啊?这样子做的好处或者目的是什么啊?

  •  
  •   hxlx · 2015-11-23 22:55:08 +08:00 · 3217 次点击
    这是一个创建于 3048 天前的主题,其中的信息可能已经有所发展或是发生改变。
    4 条回复    2015-11-23 23:18:25 +08:00
    hxlx
        1
    hxlx  
    OP
       2015-11-23 22:55:39 +08:00
    mybatis 的 dao 为什么使用接口啊?这样子做的好处或者目的是什么啊?
    loshine1992
        2
    loshine1992  
       2015-11-23 23:00:13 +08:00
    减少大量重复的代码,由代理对象实现,开发者专注写 sql 就可以了。。
    hxlx
        3
    hxlx  
    OP
       2015-11-23 23:09:22 +08:00
    @loshine1992 初学者表示不懂啊,为什么这样子就可以减少重复的代码啊?什么代理对象啊?不用接口,开发者就不能专注写sql了吗??请原谅我的无知
    Gonster
        4
    Gonster  
       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 的实现等等。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2719 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:20 · PVG 08:20 · LAX 17:20 · JFK 20:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.