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. ……
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tt50335971/article/details/78926665

<mvc:annotation-driven/>作用

如果不加这个配置的话  启动tomcat会出现这样的错误: Caused by: org.springframework.beans.factory.BeanCreationException:...
  • LQW_java_home
  • LQW_java_home
  • 2015-12-29 11:49:23
  • 3777

Spring 事务配置详解(多种配置方法)

  • 2010年07月30日 12:03
  • 132KB
  • 下载

mvc:annotation-driven的使用

通常在springMvc框架下需要进行如下的配置: 这段配置到底有什么作用呢? 会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAd...
  • yalishadaa
  • yalishadaa
  • 2017-05-06 22:09:54
  • 298

mybatis之annotation(一)

mybatis的annotation是在映射器Mapper接口上面使用的,下面详细介绍下使用方式。...
  • u014593633
  • u014593633
  • 2016-07-19 10:45:58
  • 830

mybatis-generator-annotation

这是一个关于mybatis的简单的生成工具 它可以帮助你完成一些简单的crud操作
  • zhugeyangyang1994
  • zhugeyangyang1994
  • 2016-07-30 10:18:55
  • 452

MyBatis Annotation配置

MyBatis可以利用SQL映射文件来配置,也可以利用Annotation来设置。MyBatis提供的一些基本注解如下表所示。 注解 目标 相应的XM...
  • qqlrq
  • qqlrq
  • 2015-05-20 20:02:29
  • 2579

spring2.5报出tx:annotation-driven is not bound异常解决方法

今天配置spring 是碰到tx:annotation-driven is not bound 的问题,这个错误的原因很简单是: 我们在定义申明AOP的时候。。没有加载schema。 具体...
  • ljgllxyz
  • ljgllxyz
  • 2012-09-24 10:20:18
  • 3799

使用mybatis generator 生成annotation形式的mapper

最近使用mybatisgenerator时,希望生成annotati
  • peppengliu
  • peppengliu
  • 2014-06-05 10:11:23
  • 3222

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

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

SpringMVC-<mvc:annotation-driven>的作用

背景        事实上,我们更多的时候使用这个标签只是因为我们看到人家那么配的。但是我们对其中的配置大多数时候是浑然不知的。但是,当我们想去扩展其中的一些东西的时候,才发现这个有多麽的重要!标签的...
  • wangmeng951011
  • wangmeng951011
  • 2017-03-07 21:35:23
  • 2387
收藏助手
不良信息举报
您举报文章:mark mybatis annotation driven
举报原因:
原因补充:

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