java读取配置文件properties_Mybatis3系列 - 4. mybatis-config的properties属性详解

前两章简单的讲解了MyBatis的使用方式. 接下来先全局的说一下MyBatis的全局的xml配置详细说明.

XML格式定义

-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd">

configuration 的映射文件(根据定义顺序说明)

  • properties 属性
  • settings 设置
  • typeAliases 类型别名
  • typeHandlers 类型处理器
  • objectFactory 对象工厂
  • objectWrapperFactory MyBatis对基本类型, 基本对象map和集合的封装.
  • reflectorFactory 反射模块工厂
  • plugins 插件
  • environments 环境配置
  • databaseIdProvider 数据库厂商标识
  • mappers 映射器

properties 属性

这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,也可通过 properties 元素的子元素来传递。例如:

properties中的 resource 是根据项目查找, 所以config.properties 所在目录如下图所示:

62c082dc8ec769310dbc0205987c6362.png

引用的config.properties内容如下:

a1028e0cfb3fdc1bf707339031c1813b.png

这里使用组合使用的方式主要是为了能够演示properties的使用方式, 在真正使用的时候, 直接引入config.properties就可以了. 这样在真正的和Spring做搭建的时候提供了便利.

在MyBatis的config中使用方式如下图:

c0bc6b8a743389548a21b6a12a9cf6de.png

测试代码(UserMapperTest):

1bc638a49c1832f25188800137924911.png

测试通过:

ecbddb7bc6dafdfd3c65e5f680f6b7ef.png

需要注意配置的加载顺序, 按照以下来加载。

  • 在 properties 元素体内指定的属性首先被读取。
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
  • 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。也就是Java代码配置的方式。

因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。

从 MyBatis 3.4.2 开始,你可以为占位符指定一个默认值。使用范例如下:

这个特性默认是关闭的。如果你想为占位符指定一个默认值, 你应该添加一个指定的属性来开启这个特性。例如:

创建对应的配置文件(config.properties)和 dot-mybatis-config.xml 代码如下:

e59b1d806f3dc360f857861135d7d77f.png

编写测试程序(DotUserMapperTest), 代码如下:

8c0d831c7a4ddd35f2e15f7b72cdcf90.png

准备测试, 测试通过。

9e179941a6b5c3f8f15ed8d4e050b8b7.png

就是你要的效果。 可以尝试输入一些错误的配置, 看一下效果。

注意:因为“:”是允许设置成name值得, 所以想开启上面的配置, 就需要修改默认的分隔符。

使用的时候就需要使用, 这里的db:username是一个property的name值

  

案例说明:

这里如果使用了db:username为name值, 就会出现如下的错误信息:

47bddd6941edd6dbe9c92fedecaecd20.png

从错误信息看, 应该是使用默认的“:”进行分割的。 模拟代码就是通过字符匹配到第一个“:”, 然后截取对应的字符串。源码如下:

3340ee625c168f269cef5794eebb50ab.png

所以我们就需要配置自定义的分隔符(separator-mybatis-config.xml)。

e62dc77cfb2f79768af31b40b14b6852.png

测试代码(SeparatorUserMapperTest):

2fdd1d8b70ad5b14455866281231798f.png

测试结果为, 测试成功

7a9bccf73a0939174894437acf500664.png

这里给点建议, 把上面的例子都自己动手做一边, 多修改修改数据,不用管对错, 先运行起来看看, 这样你除了能够看到如何正确配置之外,也能看到配置错误之后, 错误的信息是什么。 看的错误多了, 你也就成了别人眼里能够解决问题的大牛了。 你想成为大牛吗?

关注我, 感谢感谢。

全部代码已经上传到Github

GitHub地址: https://github.com/xymiao/mybatis3

本篇代码地址: https://github.com/xymiao/mybatis3/tree/master/mybatis3_03_mybatis_config_properties

WindowsServer2022蓝牙音频开启方法 为Windowsserver 2022 添加蓝牙音频驱动的方法和工具 阅读详情

相关推荐

Unity插件NodeCanvas之行为树的详细教程

NodeCanvas 是一个用于 Unity 的可视化脚本工具,主要用于游戏开发中的行为树、状态机和流程图的设计。它通过节点编辑器的方式,让开发者可以更直观地创建和管理游戏逻辑,减少了传统编码的复杂性。今天我们就来详细介绍一下NodeCanvas插件。

TxNet 1898

spring的一个properties配置文件,引用另外一个properties配置的变量

在需要引用的基础配置文件中,输入基础配置文件的配置项 在src/resources/目录创建 app.properties。创建filters,并创建base.properties 输入基本的配置信息。某些场景需要在配置文件中引用其他的配置文件,使用filter即可,pom文件中添加以下部分内容,在配置文件中使用${}引用即可。

robinhunan的博客 2353

基于STM32F103单片机用定时器产生PWM波-频率-占空比可调源码(可驱动直流电机).zip

基于STM32F103单片机用定时器产生PWM波_频率_占空比可调源码(可驱动直流电机)int main(void){u8 i=0,j=0;u16 len = 0;char s1[12]="pre_m2.txt=",s2[10]="0123456789",s3[6]="\"11.5\"";float pre_m1=7.5,pre_m2=0.0;init_process();sprintf(s3,"\"%.3f\"",pre_m1);//sprintf(s_A,"%f",ad_data_A );HMISendstart(); //为确保串口HMI正常通信{ HMISends("cls RED"); //发送串口指令HMISendb(0xff); //发送结束符 0XFF 0XFF 0XFFdelay_ms(1000); HMISends("cls GREEN");HMISendb(0xff);delay_ms(1000);HMISends("cls BLUE"

SpringBoot 官方文档示例:(18)在application.properties中引入其他配置文件

application.properties内容如下: server.port=8709 spring.datasource.url=jdbc:mysql://xx.xx.xx.xx/test spring.datasource.username=root spring.datasource.password=xxxx spring.datasource.driver-class-name=com.mysql.jdbc.Driver #myName=hi spring.config.import=class

amadeus_liu2的博客 4479

spring核心配置文件引入外部properties文件和另外的xml配置文件

spring核心配置文件引入外部properties文件和另外的xml配置文件 为什么要引入外部文件 我们使用jdbc的时候,会创建一个jdbc.properties配置文件,如果我需要在spring的IOC中存入连接池对象呢? 是不是需要给链接对象的属性url username password driver ,我们应该如何在spring的配置文件中引入外部文件呢? 引入properties文件 ⚫ Spring提供了读取外部properties文件的机制,使用读取到的数据为bean的属性赋值 ⚫ 操作步

fushuaiCSDN的博客 3652

全局配置文件properties引入外部配置文件

1、右键conf文件夹----->new------->File–>dbconfig.properties 2、编辑这个文件: 3、修改全局配置文件4、运行结果: 总结: 如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载: • 在 properties 元素体内指定的属性首先被读取。 • 然后根据 properties 元素中的 reso...

weixin_44706605的博客 3279

配置文件properties使用${}引用多配置一层的properties的资源

在工作里发现老板项目一些重要内容都封装 在一个新的properties里面进行引用,把我看懵了。进行多方的百度发现这个 ${} 其实它并不能对别的文件资源进行引用,即使在同一目录下,终于也是返现这个是需要在Maven进行配置的,看来Maven没学好也是一个大坑啊!接下来看看怎么操作: 在 pom.xml找到 build 标签在里面添加内容: <build> <filters...

Xuy的博客 2526

插件properties_Mybatis3系列 - 4. mybatis-configproperties属性详解

前两章简单的讲解了MyBatis的使用方式. 接下来先全局的说一下MyBatis的全局的xml配置详细说明.XML格式定义-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">configuration 的映射文件(根据定义顺序说明)properties 属性settings 设置...

weixin_31181381的博客 395

3.MyBatis核心配置文件mybatis-config.xml),Mybatis一级缓存、二级缓存?Mybatis核心生命周期?

主要用于配置和:包含了影响MyBatis行为甚深的设置(settings)和属性propertiesmybatis-config.xml是Mybatis的全局配置文件,名称可以是任意,但是一般命名都为(mybatis-config)是整个XML配置文件的根节点,其角色就相当于是MyBatis的总管,所有的配置信息都会存放在它的里面MyBatis还提供了设置这些配置信息的方法。configuration可从配置文件获取属性值,也可以通过程序直接设置,configuration可供配置内容。

相互学习 共同进步 2万+

MyBatis02-mybatis-config.xml配置文件讲解

mybatis-config.xml核心配置文件,内容的讲解

qq_31532983的博客 1378

Mybatismybatis-config.xml 引入外部配置 db-properties

提示 如果你在属性名中使用了 “:” 字符(如:db:username),或者在 SQL 映射中使用了 OGNL 表达式的三元运算符(如: ${tableName!tableName : ‘global_constants’}),就需要设置特定的属性来修改分隔属性名和默认值的字符。要启用这个特性,需要添加一个特定的属性来开启这个特性。从 MyBatis 3.4.2 开始,你可以为占位符指定一个默认值。在windows环境下的一些特定的场合可以省略(不推荐)。属性中指定的配置文件次之,最低优先级的则是。

qq_37597428的博客 920

MyBatis基本要素—核心配置文件详解

  MyBatis要想正常使用,首先就需要配置它的核心配置文件。官方明确指出应将该文件命名为:mybatis-config.xml 该文件实现了什么功能,又如何实现的,咱今天就来侃一侃。   MyBatis配置文件包含了会深深影响MyBatis行为的设置和属性信息,而且被此文件夹下所有的测试使用,在项目搭建中推荐放置在 resources 文件夹下。   核心配置文件可在MyBatis官网找到示例文件,不再赘述,仅附上网址。 https://mybatis.net.cn/index.html 进入正题。

瓜是西瓜的瓜的博客 1723

Mybatis学习之读取配置文件(三)

package com.learn.chapter2.test; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.util.Properties; import org.apache.ibatis.io.Resources; public clas

每每看到代码,就会有亲切之感! 726

Mybatis全局配置文件mybatis-config.xml

1、properties:用来引入外部properties配置文件的内容 resource:引入路径下的资源 url:引入网络路径或磁盘路径下的资源 &lt;properties resource=""&gt;&lt;/properties&gt; 2、settings:包含很多重要的的设置项 setting用来设置每一个设置项 name:设置项名,value:设置项值 &lt;s...

JokerZhan的博客 830

Mybatis从入门到实战教程】第三章 Mybatis 核心配置文件详解

MyBatis的全局配置文件properties属性 settings全局配置参数 typeAliases型别名 typeHandlers型处理器 mappers映射器

波哩个波的博客 1446

Spring命名空间注入

p命名空间注入 需要有set方法 需要添加约束 xmlns:p=&quot;http://www.springframework.org/schema/p&quot; xml配置文件 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;beans xmlns=&quot;http://w

qq_40392686的博客 684

Properties引入配置文件

1.Properties如何创建? eclipse中:new->file->输入名称 2.Properties创建范例。 JDK中查询Properties可以看出,Properties继承Hashtable,所以Properties的格式也是键对应值。 driverClassName:驱动 url:数据库位置 username:数据库账户名 password:我的数据库密码 3.如何调用配置文件Properties? 我之前在工具的封装中使用了静态代码块来封装驱动的加载,现

zh_tnis的博客 1839

Mybatismybatis-config.xml 配置中读取properties文件

Mybatis配置文件中直接加载设置好的资源文件 例如: 对于mybatis-config.xml的核心配置中,如果存在需要频繁改动的数据内容,可以提取到properties中。 #jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncpding=utf8 jdbc.username=roo...

小白的记录 3149

properties文件之间的变量引用【springboot】

1 引言: 项目重构,单体项目转成微服务架构,然一些生产properties配置要定义在环境变量启动,并且由于一些properties文件是私有引用 不得不涉及到properties变量引用问题; 1 如果封装私有代码通过配置文件交给sping加载@Value("com.id")引用,然 很简单, 只要 在环境变量定义对应的 spring.datasource.url=${spring...

cafelication的专栏 1万+

在propreties文件中引用另一个properties文件中的内容

转载:http://www.avajava.com/tutorials/lessons/how-do-i-filter-resources-based-on-values-from-a-properties-file.html?page=1 How do I filter resources based on values from a properties file? ...

weixin_30381317的博客 2356

如何在mybatis中引用java中的常量和方法

转自:http://www.68idc.cn/help/jiabenmake/qita/20140821125261.html   在mybatis的映射xml文件调用java的方法: 1. SELECT * FROM EC_CORE_USER WHERE (user_name=#{userName} or mail =#{userName} or mobile_phone...

sky_xin的专栏 4532
上一篇: python中assert是什么意思_python中assert断言的用法
下一篇: python123字典统计排序1,python字典基于值降序排序
weixin_39989939
博客等级 码龄9年 26粉丝 133原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值