`
- 浏览:
32607 次
- 性别:
- 来自:
北京
-
刚接触mybatis,个人觉得mybatis唯一的好处就是可以用xml mapper 的方式来代理生成dao类,我们不再需要写dao,取而代之的是在xml文件中写我们的sql语句就可以。这样的话,如果需要修改dao中的查询我们只需要把xml文件修改一下,不用去重新编译class文件。
首先说一下需要考虑一个问题,它是如何实现只写接口类,貌似用xml文件来做接口类的实现的呢?
mybatis对mapper的实现就是默认使用了jdk代理的方式来实现。
//注册器
MapperRegistry registry = new MapperRegistry();
//注册接口类UserMapper
registry.addMapper(UserMapper.class);
//注册接口类LogMapper
registry.addMapper(LogMapper.class);
//从注册器中获取接口UserMapper代理
UserMapper usermapper = registry.getMapper(UserMapper.class,null);
usermapper.show();
//从注册器中获取接口LogMapper代理
LogMapper logmapper = registry.getMapper(LogMapper.class,null);
logmapper.logShow();
这个我自己做了一个测试,mybatis内部也是相同的实现。
声明一个注册器(registry)注册器注册需要代理的接口,获取接口的代理类,代理类调用方法。
核心的地方就在获取接口代理类,他是如何把xml文件转换成对应接口的代理对象就在这里实现。我们来看看代码:
在mybatis org.apache.ibatis.binding包下面包含了mapper的核心类:
BindingException binding 自定义异常
MapperMethod mapper代理方法调用
MapperProxy mapper代理对象
MapperProxyFactory mapper工厂
mapperRegistry mapper注册器
稍后继续。。。。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
mybatis-3-mapper.dtd
mybatis-3-mapper.dtd,解决eclipse使用mybatis时,无法自动提示标签信息的问题
mybatis配置的重要文件包括mybatis-3-config.dtd mybatis-3-mapper.dtd
Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可。Mybatis会自动的为mapper接口生成动态代理实现类。 代码有注释,很实用的例子
如果更改mapper,此处应该是:-//mybatis.org//DTD Mapper 3.0//EN) ; 执行完上面后clean项目(Project->clean); 如果继续报错则更改出错的头文件 将 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0/...
Spring整合Mybatis源码解析
MyBatis 源码解析:通过源码深入理解 SQL 的执行过程 抓下来打包成了HTML文件, 方便离线观看
MyBatis源码解析
MyBatis源码分析.pdf
eclipse中使用xml自动提示功能所需文件:mybatis-3-mapper.dtd eclipse中使用xml自动提示功能所需文件:mybatis-3-mapper.dtd eclipse中使用xml自动提示功能所需文件:mybatis-3-mapper.dtd
本博客有零基础入门MyBatis,欢迎关注本博客。