mybatis 同名方法_MyBatis(四):xml配置详解
目录
1、我们将 数据库的配置语句写在 db.properties 文件中
2、在 mybatis-configuration.xml 中加载db.properties文件并读取
通过源码我们可以分析读取优先级:
1、mybatis 默认支持的别名
2、自定义别名
上一篇博客我们介绍了mybatis的增删改查入门实例,我们发现在 mybatis-configuration.xml 的配置文件中,对数据库的配置都是硬编码在这个xml文件中,如下图,那么我们如何改进这个写法呢?
1、我们将 数据库的配置语句写在 db.properties 文件中
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=root
2、在 mybatis-configuration.xml 中加载db.properties文件并读取
如果数据库有变化,我们就可以通过修改 db.properties 文件来修改,而不用去修改 mybatis-configuration.xml 文件
注意:我们也可以在中手动增加属性
那么这个时候是读取的username 是以 db.properties 文件中的 root 为准,还是以自己配置的 aaa 为准呢?
我们先看一段 properties 文件加载的源码
private void propertiesElement(XNode context) throws Exception {
if (context != null) {
/**
* 解析properties 属性中指定的属性。
*/
Properties defaults = context.getChildrenAsProperties();
String resource = context.getStringAttribute("resource"); //resource 制定的属性路径
String url = context.getStringAttribute("url"); //url制定的属性路径
if (resource != null && url != null) {
throw new BuilderException("The properties element cannot specify both a URL and a resource based property file reference. Please specify one or the other.");
}
/**
* 根据 properties 元素中的 resource 属性读取类路径下属性文件,并覆盖properties 属性中指定的同名属性。
*/
if (resource != null) {
defaults.putAll(Resources.getResourceAsProperties(resource));
} else if (url != null) {
/**
* 根据properties元素中的url属性指定的路径读取属性文件,并覆盖properties 属性中指定的同名属性。
*/
defaults.putAll(Resources.getUrlAsProperties(url));
}
/**
* 获取方法参数传递的properties
* 创建XMLConfigBuilder实例时,this.configuration.setVariables(props);
*/
Properties vars = configuration.getVariables();
if (vars != null) {
defaults.putAll(vars);
}
parser.setVariables(defaults);
configuration.setVariables(defaults);
}
}
通过源码我们可以分析读取优先级:
1、在 properties 内部自定义的属性值第一个被读取
2、然后读取 resource 路径表示文件中的属性,如果有它会覆盖已经读取的属性;如果 resource 路径不存在,那么读取 url 表示路径文件中的属性,如果有它会覆盖第一步读取的属性值
3、最后读取 parameterType 传递的属性值,它会覆盖已读取的同名的属性
前面两步好理解,第三步我们可以举个例子来看:
我们在 userMapper.xml 文件中进行模糊查询
select * from user where username like '%${jdbc.username}%'
这个时候你会发现无论你后台传给这个查询语句什么参数,都是 select * from user where username like '%root%'
mybatis 的别名配置
在 userMapper.xml 文件中,我们可以看到resultType 和 parameterType 需要指定,这这个值往往都是全路径,不方便开发,那么我们就可以对这些属性进行一些别名设置
1、mybatis 默认支持的别名
2、自定义别名
一、定义单个别名
首先在全局配置文件 mybatis-configuration.xml 文件中添加如下配置:是在标签下
第二步通过 user 引用
二、批量定义别名
在全局配置文件 mybatis-configuration.xml 文件中添加如下配置:是在标签下
引用的时候类名的首字母大小写都可以
MyBatis系列文章:张晓康:MyBatis(一):JDBCzhuanlan.zhihu.com张晓康:MyBatis(二):初识MyBatiszhuanlan.zhihu.com张晓康:MyBatis(三):注解实现zhuanlan.zhihu.com张晓康:MyBatis(四):xml配置详解zhuanlan.zhihu.com张晓康:MyBatis(五):动态SQLzhuanlan.zhihu.com张晓康:MyBatis(六):Mapper加载映射zhuanlan.zhihu.com张晓康:MyBatis(七):一对一、一对多、多对多zhuanlan.zhihu.com张晓康:MyBatis(八):懒加载zhuanlan.zhihu.com张晓康:MyBatis(九):一级缓存、二级缓存zhuanlan.zhihu.com张晓康:MyBatis(十):逆向生成java文件zhuanlan.zhihu.com张晓康:MyBatis(十一):MyBatis整合Springzhuanlan.zhihu.com
mybatis 同名方法_MyBatis(四):xml配置详解相关推荐
- SpringBoot—整合log4j2入门和log4j2.xml配置详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...
- JavaWeb web.xml配置详解
参考: XML 教程 Java web之web.xml配置详解 Javaweb三大组件是:Servlet,Filter,Listener. 1.Servlet Servlet作为中转处理的容器,连接了 ...
- web.xml配置详解
往者不谏 来者可追 写作是最好的社交 新随笔 订阅 web.xml配置详解 Web.xml常用元素<web-app><display-name></display-nam ...
- Java web之web.xml配置详解
什么是web.xml web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发.web.xml主要用来配置Filter,Listener,Servlet等.但是 ...
- Maven的settings.xml配置详解
Maven的settings.xml配置详解 1 基本介绍 maven的两大配置文件:settings.xml和pom.xml.其中settings.xml是maven的全局配置文件,pom.xml则 ...
- Ehcache 中ehcache.xml 配置详解和示例
EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存 ...
- 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...
- 160329(二)、web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- java web工程web.xml配置详解
转载自:http://blog.csdn.net/believejava/article/details/43229361 这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢 ...
最新文章
- Python自动化之YAML解析
- python 显示数据库数据tk_如何使用python显示从Mysql表获取的Tkinter treeview中的数据...
- 桶排序 Bin Sort
- Linux 网络编程八(epoll应用--大并发处理)
- 写一个简单控制台启动的mcv服务
- java输入年月输出日历_12月营销热点日历 | 2020年创意冲刺倒计时!
- python函数体以冒号起始、并且是缩进格式的_函数体以冒号起始,并且是缩进格式的。(3.0分)_学小易找答案...
- html双箭头菜单,CSS常用样式之绘制双箭头的示例代码
- 笔记本电脑桌面的计算机不见了,小编为你分析win7系统笔记本电脑桌面计算机图标不见了的设置方案....
- android网络工程师,网络工程师考试app下载-网络工程师考试 安卓版v3.0.7-PC6安卓网...
- 苹果开发者 - 添加App
- 决策树的特性及优缺点
- 小米nfc怎么复制门禁卡
- excel设置行高等于列宽_如何在Excel中设置行高和列宽
- 分支-07. 比较大小(10)
- cocos2dx-精灵的移动跳跃
- 钉钉企业内部应用开发php,钉钉企业内部应用开发心得
- 杰普实训(前端)第一天知识点总结
- 等价无穷小替换及其习题 笔记
- 数字滤波算法 在数字信号处理应用中使用微控制器
热门文章
- 重磅直播|GDR-Net:基于几何信息指导的单目6D物体姿态估计算法(CVPR2021作者开讲啦)...
- 一文详解OpenCV中的CUDA模块
- 视频+课件|国内首个基于结构光投影三维重建系列视频课程
- wangEditor 上传图片,回调函数 Cannot read properties of undefined
- MFC应用程序中添加控制台窗口
- 如果你铁了心要好好搞科研,我强烈建议你看一下这个帖子
- BLASTN format=6
- 零基础入门学习Python(31)-异常处理2-try语句
- NC:中国药科郝海平和郑啸发现饮食-微生物互作缓解肠损伤
- R语言回归模型构建、回归模型基本假设(正态性、线性、独立性、方差齐性)、回归模型诊断、car包诊断回归模型、特殊观察样本分析、数据变换、模型比较、特征筛选、交叉验证、预测变量相对重要度