插件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.pswp.cn/news/534996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534996.shtml
英文地址,請注明出處:http://en.pswp.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()——返回…