插件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 所在目录如下图所示:

b247345314e908ba3a190c30f93e6879.png

引用的config.properties内容如下:

29ac41feba3ee66dd6c15ff739ff3501.png

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

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

f82c2f6eae85a6559b4d6ff37633cc2e.png

测试代码(UserMapperTest):

d459d8735a2a4a988dbf0569af512ad4.png

测试通过:

bca82df62e1b82fe5eb74dcf54129979.png

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

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

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

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

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

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

919e0332a896933217d2fdc0f440320f.png

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

e70ec3cfdc5629dbc8e4444513a40d89.png

准备测试, 测试通过。

83d85f97f713258effb47baa892e3663.png

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

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

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

  

案例说明:

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

808d9d2bad35d6f1c0c63845f4f73895.png

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

0c275d93f9a647d2bbba7aa8a6586757.png

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

1263ab0dd7b8cb945fcba2eaf8e59ac3.png

测试代码(SeparatorUserMapperTest):

ee335a390c040dab1636d8d31e15e2f1.png

测试结果为, 测试成功

ddbd7cfd16b0ba8c766a75382394f5ca.png

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

关注我, 感谢感谢。

全部代码已经上传到Github

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis 6】秒杀业务——分布式锁

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站黑马的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Redis知识点速览&#…

python读取文件最后几行_如何用python获取文件的最后一行,文件可能会比较大

展开全部 #!/usr/bin/env python import os import sys def get_last_n_lines(logfile, n): blk_size_max 4096 n_lines [] with open(logfile, rb) as fp: fp.seek(0, os.SEEK_END) cur_pos fp.tell() while cur_pos > 0 and len(n_lines) < n: blk_size min(blk_si…

360oauth token是什么意思_Oauth/access token

oauth/access_token第三放应用使用开始的request_token来换取用户授权过的Access_tokenURL格式标准的OAuth http返回格式HTTP请求方式POST请求数限制false请求参数oauth_consumer_key: 创建应用时生成的APP KEY。oauth_token:经过用户授权的Request Token。oauth_signature_met…

【Swagger】看这一篇就够了

各位小伙伴们大家好&#xff0c;欢迎跟着小扎扎一起学习【Swagger】这门技术&#xff0c;在本片博客中我对B站狂神的Swagger教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Swagger知识点…

python mockito arg_that_wqingxiao

偶然间在脉脉上看到了一道头条的算法面试题按照题目的理解&#xff0c;简单的写了一个html网页pool开始{{index}}{{index}}var vm new Vue({el: #vue_det,data: {list: [],i: 0},methods: {details: function () {return this.site " - 学的不仅是技术&#xff0c;更是梦…

用python画大雄_python制作斗图生成器

网上各种带文字的表情图片都被大家玩坏了&#xff0c;今天就和大家一起用 python 亲自做一个带字表情图片生成器。 不知道大家有没有看到网上有很多人都在说 "人生苦短&#xff0c;我用 python"&#xff0c;这句话我之前也不是很理解&#xff0c;觉得人生苦短和用pyt…

【spring cloud】(一)使用idea创建可相互调用的多模块应用

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的spring cloud专栏&#xff0c;在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;spr…

epson彩色打印机加墨水_爱普生打印机墨盒如何加墨?

展开全部掌握以下几点步骤&#xff0c;即可轻松加墨。1、首先&#xff0c;从打印机上取下墨盒&#xff0c;32313133353236313431303231363533e4b893e5b19e31333365646234这里就不好做介绍了&#xff0c;取下墨盒的方法因机而异。将墨盒上的一层贴纸撕掉&#xff0c;并拿出所需材…

python字符串百分号_Python字符串格式化的2种方法

本文介绍了Python字符串格式化&#xff0c;主要有两种方法&#xff0c;分享给大家&#xff0c;具体如下 用于字符串的拼接&#xff0c;性能更优。 字符串格式化有两种方式&#xff1a;百分号方式、format方式。 百分号方式比较老&#xff0c;而format方式是比较先进的&#xff…

【踩坑,已解决】spring cloud删除子模块后创建同名模块时遇到的删除不净,java、resources包失效,java、resources包被标记为模块等问题

&#x1f4a1;问题速览&#x1f4cc; 问题复现&#x1f4cc; 没有任何操作&#xff0c;model又出现了&#x1f4cc; 模块重建后java、resources包失效&#x1f4cc; 模块重建后java、resources包被标记为了模块&#x1f4cc; 问题复现 本人是在跟着B站尚硅谷的视频练习Spring c…

蓝牙扫描过程解析_智慧定位系统之蓝牙网关在室内定位技术的原理浅析-新导智能...

蓝牙室内定位技术是利用在室内安装的若干个蓝牙局域网接入点&#xff0c;把网络维持成根据多用户的基础网络连接形式&#xff0c;并确保蓝牙局域网接入点始终是这个微网的主设备&#xff0c;然后经过丈量信号强度对新加入的盲节点进行三角定位。苏州新导实时定位体系(RTLS)和室…

【spring cloud】(二)服务的注册发现——Eureka

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的spring cloud专栏&#xff0c;在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;spr…

python选择题题库百度文库_大学Python程序题题库

程序设计 题目&#xff1a;补充 fun 函数&#xff0c;其功能是判断一个整数是否是素数&#xff0c;在主 函数 main 中输入一个整数&#xff0c;调用该 fun 函数进行判断并输 出结果。 要求&#xff1a;使用 math 相关函数 import math def fun(n): i,w2,0 if n<1: w1 while …

新手攻略熔炉_我的世界攻略:生存模式新手攻略

《我的世界》(英文:《minecraft》)是一款风靡全球的高自由度沙盒游戏&#xff0c;由瑞典MojangAB和4J Studios开发。国际版由微软Mojang工作室开发&#xff0c;中国版由网易代理。Minecraft着重于让玩家去探索、交互&#xff0c;并且改变一个由一立方米大小的方块动态生成的地图…

【spring cloud】(三)服务调用——Ribbon、OpenFeign

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的spring cloud专栏&#xff0c;在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;服务…

c语言斐波那契数列_剑指Offer-10-I.斐波那契数列

题目题目描述写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始&#xff0c;之后的斐波那契数…

mysql 导入 mssql_MySQL(csv,text)导入mssql使用方法

MySQL(csv,text)导入mssql是非常的简单了但是在导入过程中会碰到text字段问题了&#xff0c;下面我们就来看一篇关于MySQL(csv,text)导入mssql使用方法吧&#xff0c;具体的操作细节如下所示。分两步处理&#xff0c;第一步是将csv导入到mysql。没有使用mssql自带客户端的导入功…

c# mvvm模式获取当前窗口_AWTK-MVVM 介绍

MVVM(Model-View-ViewModel)介绍8.1 分离用户界面和业务逻辑在开发应用程序时&#xff0c;要把用户界面和业务逻辑分离开来&#xff0c;这是每个程序员都知道的常识。分离用户界面和业务逻辑有几个重要的好处&#xff1a;有利于隔离变化。用户界面是最容易变化的&#xff0c;易…

【spring cloud】(三)服务降级——Hystrix

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的spring cloud专栏&#xff0c;在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;服务…

mysql高级查询教程_MYSQL高级查询

实际开发中&#xff0c;经常需要对某些数据进行统计&#xff0c;比如&#xff0c;统计某个字段的最大值、最小值、平均值等。MySQL中&#xff0c;提供了一些函数来实现这些功能聚合函数COUNT()——返回某列的行数SUM()——返回某列值的和AVG()——返回某列的平均值MAX()——返回…