为什么MyBatis配置映射器只有四种
以下代码为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标签的底层定义
结论:
- MyBatis配置映射器的方式只有四种方式,如果不属于四种之一就会抛出异常
- package配置的方式和另外三种配置方式在代码逻辑上属于两类
- mappers标签内部,可以使用不同的进行配置mapper映射器
为什么MyBatis配置映射器只有四种相关推荐
- 计算机设备打开,win7如何打开设备管理器|win7打开设备管理器的四种方法
设备管理器是一种管理工具,可用它来管理计算机上的设备,比如查看和更改设备属性.更新设备驱动程序.配置设备设置和卸载设备等.可是有些深度win7用户不知道设备管理器设置在哪里,那么在win7如何打 ...
- Linux配置网络信息(四种方法)
Linux配置网络信息(四种方法) 临时配置IP地址(2种方式) 1.ifconfig命令 语法: ifconfig <以太网接口> <IP地址> netmask <掩码 ...
- (八)mybatis之映射器
映射器 映射器是由Java接口和XML文件(或注解)共同组成的,作用如下: ① 定义参数类型. ② 描述缓存. ③ 描述SQL语句. ④ 定义查询结果和POJO的映射关系. 以下用两种 ...
- ElasticSearch 动态映射和静态映射,以及四种字段类型
文章目录 1.ElasticSearch 映射 1.1 映射分类 1.2 类型推断 2.ElasticSearch 字段类型 2.1 核心类型 2.1.1 字符串类型 2.1.2 数字类型 2.1.3 ...
- 【MyBatis】 ---- 映射器(接口+XML文件)
目录 一. 配置元素 1. select元素 2. insert元素 3. sql元素 4. resultMap元素 5. resultMap元素中的级联 (代码github) 一.映射器的配置元素 ...
- Spring中配置Hibernate事务的四种方式
2019独角兽企业重金招聘Python工程师标准>>> 为了保证数据的一致性,在编程的时候往往需要引入事务这个概念.事务有4个特性:原子性.一致性.隔离性.持久性. 事务的种类有两种 ...
- Android入门——电话拨号器和四种点击事件
相对于HelloWorld来说,电话拨号器也是Android的一个入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 ...
- Spring集成Mybatis配置映射文件方法详解
Spring ORM模块集成Mybatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般不直接在Mybatis的配置文件里进行配置,而会在Spring的配置文件里使用M ...
- Android开发之入门基础篇--拨号器的四种实现方式
整理之前的学习笔记,发现了很多在学习Android基础的过程中的一些很适合一些新手开发的代码,想想之前也是一步一个脚印,一行一行的代码敲出来的,虽然这些代码很简单,但是里面的编程思路却是很有学习意义的 ...
- MyBatis 配置映射Mapper.xml以及驼峰
记录关于获取不到user_name到userName的映射 在Mapper-config.xml中更改setting <settings><setting name="ma ...
最新文章
- 超燃!Apache Flink 全球顶级盛会强势来袭
- Keras【Deep Learning With Python】更优模型探索Keras实现CNN
- 通用存储过程分页---(测试能用的请放心试用)
- 【已解决】surefire-reports for the individual test results.
- 【渝粤教育】电大中专Office办公软件 (2)作业 题库
- .NET平台依赖注入机制及IoC的设计与实现
- php slug,PHP函数使slug(URL字符串)
- java 守护线程 作用_java中守护线程的一些概念和用法
- python判断_Python中判断一个字符串是否以特定字符前缀开始的函数:startswith()
- ModuleNotFoundError: No module named ‘pyemd‘ 解决
- 如何求递归算法的时间复杂度
- 失传千年AE特效真经(二)
- PageHelper.startPage与PageHelper.offsetPage区别
- 量化投资之工具篇一:Backtrader从入门到精通(3)-Cerebro源代码解读
- BUCT数据结构——图
- win10计算机亮度无法调节,Win10电脑无法调节亮度怎么办 Win10系统不能调节屏幕亮度解决方法...
- Xshell 常用配置
- python读取word内容复制粘贴,Python读取word文本操作详解
- trips | python注释快捷键
- mx6 CSR8670驱动移植 基于linux3.14.58
热门文章
- [2018.09.08 T1] 炉石
- 第一部分 第三章 1039-1058 答案合集
- Luogu4438[HNOI/AHOI2018] 道路
- Express框架学习笔记-express路由参数
- 一般试卷的纸张大小是多少_考试试卷统一设置标准规格要求
- sqlite数据库主键自增_你绝对不可错过的数据库入门全套内容
- python3实用编程技巧_Python3实用编程技巧进阶一
- hash算法_Hash 一致性算法的 Java 实现
- 数组是逻辑结构还是存储结构_逻辑结构?存储结构?傻傻分不清……
- Java学习笔记之设计模式(1)设计模式简介