MapperScannerConfigurer 作用详解

自动扫描 将Mapper接口生成代理注入到Spring

1 <!-- DAO接口所在包名,Spring会自动查找其下的类 --> 2 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 3 <property name="basePackage" value="com.em" /> 4 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> 5 </bean>
  • MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中

  • 把Mapper接口转换成MapperFactoryBean

    • 其实在SqlSessionFactoryBean 里面就已经实现了注册了 MapperProxyFactory 到Mybatis
    • 这里做的是把它们托管到spring

    { if (this.processPropertyPlaceHolders) { processPropertyPlaceHolders(); }

    1ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry); 2scanner.setAddToConfig(this.addToConfig); 3scanner.setAnnotationClass(this.annotationClass); 4scanner.setMarkerInterface(this.markerInterface); 5scanner.setSqlSessionFactory(this.sqlSessionFactory); 6scanner.setSqlSessionTemplate(this.sqlSessionTemplate); 7scanner.setSqlSessionFactoryBeanName(this.sqlSessionFactoryBeanName); 8scanner.setSqlSessionTemplateBeanName(this.sqlSessionTemplateBeanName); 9scanner.setResourceLoader(this.applicationContext); 10scanner.setBeanNameGenerator(this.nameGenerator); 11scanner.registerFilters(); 12scanner.scan(StringUtils.tokenizeToStringArray(this.basePackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS));

    }

  • 注意,不管先后顺序

    • SqlSessionFactoryBean 继承了InitializingBean 接口

      • 会在所有spring 注册完成后,执行afterPropertiesSet方法
      • 1 public void afterPropertiesSet() throws Exception { 2 Assert.notNull(this.dataSource, "Property 'dataSource' is required"); 3 Assert.notNull(this.sqlSessionFactoryBuilder, "Property 'sqlSessionFactoryBuilder' is required"); 4 this.sqlSessionFactory = this.buildSqlSessionFactory(); 5 }
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o