目录

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(一):JDBC​zhuanlan.zhihu.com张晓康:MyBatis(二):初识MyBatis​zhuanlan.zhihu.com张晓康:MyBatis(三):注解实现​zhuanlan.zhihu.com张晓康:MyBatis(四):xml配置详解​zhuanlan.zhihu.com张晓康:MyBatis(五):动态SQL​zhuanlan.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整合Spring​zhuanlan.zhihu.com

mybatis 同名方法_MyBatis(四):xml配置详解相关推荐

  1. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  2. JavaWeb web.xml配置详解

    参考: XML 教程 Java web之web.xml配置详解 Javaweb三大组件是:Servlet,Filter,Listener. 1.Servlet Servlet作为中转处理的容器,连接了 ...

  3. web.xml配置详解

    往者不谏 来者可追 写作是最好的社交 新随笔 订阅 web.xml配置详解 Web.xml常用元素<web-app><display-name></display-nam ...

  4. Java web之web.xml配置详解

    什么是web.xml web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发.web.xml主要用来配置Filter,Listener,Servlet等.但是 ...

  5. Maven的settings.xml配置详解

    Maven的settings.xml配置详解 1 基本介绍 maven的两大配置文件:settings.xml和pom.xml.其中settings.xml是maven的全局配置文件,pom.xml则 ...

  6. Ehcache 中ehcache.xml 配置详解和示例

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存 ...

  7. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  8. 160329(二)、web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  9. java web工程web.xml配置详解

    转载自:http://blog.csdn.net/believejava/article/details/43229361 这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢 ...

最新文章

  1. Python自动化之YAML解析
  2. python 显示数据库数据tk_如何使用python显示从Mysql表获取的Tkinter treeview中的数据...
  3. 桶排序 Bin Sort
  4. Linux 网络编程八(epoll应用--大并发处理)
  5. 写一个简单控制台启动的mcv服务
  6. java输入年月输出日历_12月营销热点日历 | 2020年创意冲刺倒计时!
  7. python函数体以冒号起始、并且是缩进格式的_函数体以冒号起始,并且是缩进格式的。(3.0分)_学小易找答案...
  8. html双箭头菜单,CSS常用样式之绘制双箭头的示例代码
  9. 笔记本电脑桌面的计算机不见了,小编为你分析win7系统笔记本电脑桌面计算机图标不见了的设置方案....
  10. android网络工程师,网络工程师考试app下载-网络工程师考试 安卓版v3.0.7-PC6安卓网...
  11. 苹果开发者 - 添加App
  12. 决策树的特性及优缺点
  13. 小米nfc怎么复制门禁卡
  14. excel设置行高等于列宽_如何在Excel中设置行高和列宽
  15. 分支-07. 比较大小(10)
  16. cocos2dx-精灵的移动跳跃
  17. 钉钉企业内部应用开发php,钉钉企业内部应用开发心得
  18. 杰普实训(前端)第一天知识点总结
  19. 等价无穷小替换及其习题 笔记
  20. 数字滤波算法 在数字信号处理应用中使用微控制器

热门文章

  1. 重磅直播|GDR-Net:基于几何信息指导的单目6D物体姿态估计算法(CVPR2021作者开讲啦)...
  2. 一文详解OpenCV中的CUDA模块
  3. 视频+课件|国内首个基于结构光投影三维重建系列视频课程
  4. wangEditor 上传图片,回调函数 Cannot read properties of undefined
  5. MFC应用程序中添加控制台窗口
  6. 如果你铁了心要好好搞科研,我强烈建议你看一下这个帖子
  7. BLASTN format=6
  8. 零基础入门学习Python(31)-异常处理2-try语句
  9. NC:中国药科郝海平和郑啸发现饮食-微生物互作缓解肠损伤
  10. R语言回归模型构建、回归模型基本假设(正态性、线性、独立性、方差齐性)、回归模型诊断、car包诊断回归模型、特殊观察样本分析、数据变换、模型比较、特征筛选、交叉验证、预测变量相对重要度