以下代码为MyBatis源码:

//解析mappers标签
mapperElement(root.evalNode("mappers"));
private void mapperElement(XNode parent) throws Exception {if (parent != null) {//循环遍历我们mappers标签下面的所有子标签for (XNode child : parent.getChildren()) {//方式一:通过package方式配置映射器if ("package".equals(child.getName())) {String mapperPackage = child.getStringAttribute("name");configuration.addMappers(mapperPackage);} else {//获取其他三种配置方式String resource = child.getStringAttribute("resource");String url = child.getStringAttribute("url");String mapperClass = child.getStringAttribute("class");//方式二:使用resource方式配置映射器if (resource != null && url == null && mapperClass == null) {ErrorContext.instance().resource(resource);try (InputStream inputStream = Resources.getResourceAsStream(resource)) {XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, resource, configuration.getSqlFragments());mapperParser.parse();}//方式三:使用url的方式配置映射器} else if (resource == null && url != null && mapperClass == null) {ErrorContext.instance().resource(url);try (InputStream inputStream = Resources.getUrlAsStream(url)) {XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, url, configuration.getSqlFragments());mapperParser.parse();}//方式四:使用类名指定接口名称的方式配置映射器} else if (resource == null && url == null && mapperClass != null) {Class<?> mapperInterface = Resources.classForName(mapperClass);configuration.addMapper(mapperInterface);} else {//不属于上述四种方式则会抛出异常throw new BuilderException("A mapper element may only specify a url, resource or class, but not more than one.");}}}}}

A mapper element may only specify a url, resource or class, but not more than one.

图示标签代码,为mybatis-config.xml配置文件中,mappers标签的底层定义

结论:

  1. MyBatis配置映射器的方式只有四种方式,如果不属于四种之一就会抛出异常
  2. package配置的方式和另外三种配置方式在代码逻辑上属于两类
  3. mappers标签内部,可以使用不同的进行配置mapper映射器

为什么MyBatis配置映射器只有四种相关推荐

  1. 计算机设备打开,win7如何打开设备管理器|win7打开设备管理器的四种方法

    ‍‍ 设备管理器是一种管理工具,可用它来管理计算机上的设备,比如查看和更改设备属性.更新设备驱动程序.配置设备设置和卸载设备等.可是有些深度win7用户不知道设备管理器设置在哪里,那么在win7如何打 ...

  2. Linux配置网络信息(四种方法)

    Linux配置网络信息(四种方法) 临时配置IP地址(2种方式) 1.ifconfig命令 语法: ifconfig <以太网接口> <IP地址> netmask <掩码 ...

  3. (八)mybatis之映射器

    映射器 映射器是由Java接口和XML文件(或注解)共同组成的,作用如下: ①   定义参数类型. ②   描述缓存. ③   描述SQL语句. ④   定义查询结果和POJO的映射关系. 以下用两种 ...

  4. ElasticSearch 动态映射和静态映射,以及四种字段类型

    文章目录 1.ElasticSearch 映射 1.1 映射分类 1.2 类型推断 2.ElasticSearch 字段类型 2.1 核心类型 2.1.1 字符串类型 2.1.2 数字类型 2.1.3 ...

  5. 【MyBatis】 ---- 映射器(接口+XML文件)

    目录 一. 配置元素 1. select元素 2. insert元素 3. sql元素 4. resultMap元素 5. resultMap元素中的级联 (代码github) 一.映射器的配置元素 ...

  6. Spring中配置Hibernate事务的四种方式

    2019独角兽企业重金招聘Python工程师标准>>> 为了保证数据的一致性,在编程的时候往往需要引入事务这个概念.事务有4个特性:原子性.一致性.隔离性.持久性. 事务的种类有两种 ...

  7. Android入门——电话拨号器和四种点击事件

    相对于HelloWorld来说,电话拨号器也是Android的一个入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 ...

  8. Spring集成Mybatis配置映射文件方法详解

    Spring ORM模块集成Mybatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般不直接在Mybatis的配置文件里进行配置,而会在Spring的配置文件里使用M ...

  9. Android开发之入门基础篇--拨号器的四种实现方式

    整理之前的学习笔记,发现了很多在学习Android基础的过程中的一些很适合一些新手开发的代码,想想之前也是一步一个脚印,一行一行的代码敲出来的,虽然这些代码很简单,但是里面的编程思路却是很有学习意义的 ...

  10. MyBatis 配置映射Mapper.xml以及驼峰

    记录关于获取不到user_name到userName的映射 在Mapper-config.xml中更改setting <settings><setting name="ma ...

最新文章

  1. 超燃!Apache Flink 全球顶级盛会强势来袭
  2. Keras【Deep Learning With Python】更优模型探索Keras实现CNN
  3. 通用存储过程分页---(测试能用的请放心试用)
  4. 【已解决】surefire-reports for the individual test results.
  5. 【渝粤教育】电大中专Office办公软件 (2)作业 题库
  6. .NET平台依赖注入机制及IoC的设计与实现
  7. php slug,PHP函数使slug(URL字符串)
  8. java 守护线程 作用_java中守护线程的一些概念和用法
  9. python判断_Python中判断一个字符串是否以特定字符前缀开始的函数:startswith()
  10. ModuleNotFoundError: No module named ‘pyemd‘ 解决
  11. 如何求递归算法的时间复杂度
  12. 失传千年AE特效真经(二)
  13. PageHelper.startPage与PageHelper.offsetPage区别
  14. 量化投资之工具篇一:Backtrader从入门到精通(3)-Cerebro源代码解读
  15. BUCT数据结构——图
  16. win10计算机亮度无法调节,Win10电脑无法调节亮度怎么办 Win10系统不能调节屏幕亮度解决方法...
  17. Xshell 常用配置
  18. python读取word内容复制粘贴,Python读取word文本操作详解
  19. trips | python注释快捷键
  20. mx6 CSR8670驱动移植 基于linux3.14.58

热门文章

  1. [2018.09.08 T1] 炉石
  2. 第一部分 第三章 1039-1058 答案合集
  3. Luogu4438[HNOI/AHOI2018] 道路
  4. Express框架学习笔记-express路由参数
  5. 一般试卷的纸张大小是多少_考试试卷统一设置标准规格要求
  6. sqlite数据库主键自增_你绝对不可错过的数据库入门全套内容
  7. python3实用编程技巧_Python3实用编程技巧进阶一
  8. hash算法_Hash 一致性算法的 Java 实现
  9. 数组是逻辑结构还是存储结构_逻辑结构?存储结构?傻傻分不清……
  10. Java学习笔记之设计模式(1)设计模式简介