mark mybatis annotation driven

原创 2017年12月28日 21:34:40

mybatis annotaion方式并不像spring,需要指定annotation-driven来启用annotaion特性。
mybatis默认支持annotation,参考MapperRegistry#addMapper

/**
 * MapperRegistry Configuration实现annotaion mapper注册的帮助类
 **/
public <T> void addMapper(Class<T> type) {
    if (type.isInterface()) {
        try {
          MapperAnnotationBuilder parser = new MapperAnnotationBuilder(config, type);
          parser.parse();
        } finally {
            //...
        }
    }
}

接下来就是对Method对象的parse,解析出完整的mapped-statement 配置

public void parse() {
    // Class级别解析
    parseCache();
    parseCacheRef();
    Method[] methods = type.getMethods();
    // Method级别解析
    for (Method method : methods) {
        try {
            // 根据Annotation解析完整的MappedStatement信息
            parseStatement(method);
        } catch (IncompleteElementException e) {
            // 加入待处理队列
            configuration.addIncompleteMethod(new MethodResolver(this, method));
        }
    }
    // 再次尝试解析 IncompleteMethod
    parsePendingMethods();
}

最后,将解析完的mapped-statement 归入configuration

MappedStatement.Builder statementBuilder = new MappedStatement.Builder(configuration, id, sqlSource, sqlCommandType);
// ......
MappedStatement statement = statementBuilder.build();
configuration.addMappedStatement(statement);

附:mybatis Mapper XML 解析顺序

  1. 循环指定的mapperLocations,创建对应XMLMapperBuilder
  2. 解析mapper node,addMappedStatement
  3. guess xml namespace(Class),引入Annotation处理流程
  4. 创建MapperAnnotationBuilder
  5. 解析 Class.method annotation,addMappedStatement
  6. ……
版权声明:本文为博主原创文章,未经博主允许不得转载。

使用全注解配置Spring MVC+Spring +MyBatis框架,带事务配置。

是不是一个比较疯狂的想法。 首先我们配置Spring MVC的配置类,为了方便你可以继承AbstractAnnotationConfigDispatcherServletInitializer,关于这...
  • ykzhen2015
  • ykzhen2015
  • 2017年04月25日 06:36
  • 1477

spring的annotation-driven配置事务管理器详解

本文仅基于3.0+版本作为测试) 假定spring 容器中定义了两个事务管理器:transactionManagerX,transactionManagerY,分管两个数据源datasourceX和...
  • JIESA
  • JIESA
  • 2015年11月11日 16:19
  • 1866

菜鸟之路——Spring MVC(十二)<mvc:annotation-driven/>做了什么

是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethod...
  • sjjsh2
  • sjjsh2
  • 2016年11月09日 15:46
  • 7111

spring的annotation-driven配置事务管理器详解

本文仅基于3.0+版本作为测试 假定spring 容器中定义了两个事务管理器:transactionManagerX,transactionManagerY,分管两个数据源datasourceX和da...
  • u011776918
  • u011776918
  • 2015年04月19日 17:49
  • 767

spring3.0事务的多数据源的annotation-driven用法

一.annotation-driven如何正确使用事务管理器 (本文仅基于3.0+版本作为测试) 假定spring 容器中定义了两个事务管理器:transactionManagerX,tra...
  • dknypxt
  • dknypxt
  • 2012年07月22日 09:02
  • 11323

剖析<context:component-scan/>、<mvc:annotation-driven/>

和 相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconvert...
  • kent_kent_kent
  • kent_kent_kent
  • 2013年10月11日 10:44
  • 3714

spring <mvc:annotation-driven />注解意义

是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethod...
  • wish_j
  • wish_j
  • 2016年01月09日 12:00
  • 159

<mvc:annotation-driven />深度解析

来源:http://www.tuicool.com/articles/UZrUfyf @ResponseBody & @RequestBody作用? @RequestBody ...
  • aosica321
  • aosica321
  • 2017年01月18日 14:17
  • 87

Spring3参考手册 mvc:annotation-driven

This tag registers the DefaultAnnotationHandlerMapping and AnnotationMethodHandlerAdapter beans that...
  • lanchengxiaoxiao
  • lanchengxiaoxiao
  • 2012年04月07日 10:23
  • 779

SpringMVC 解读——<mvc:annotation-driven/>

是做什么的?它做了什么?它与有什么区别?
  • dreamsunday
  • dreamsunday
  • 2015年11月12日 17:02
  • 6254
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mark mybatis annotation driven
举报原因:
原因补充:

(最多只允许输入30个字)