1. 程式人生 > 實用技巧 >Mybatis攔截器介紹

Mybatis攔截器介紹

在做資料開發的時候,常常需要用到資料庫連線字串,很多時候都不知道連線字串中每個欄位的具體含義,今天就在這裡總結一下,方便以後使用。下面就用一個簡單的例子開始

Data Source=(local); Database=WebDB; User ID=WebUser; Password=WebUser; pooling=true; min pool size=5; max pool size=512; connect timeout = 20;Integrated Security=SSPI

我們發現這個字串中都是一個“”屬性名=值“”和“;”構成的。在該字串中必須包含的欄位就是資料庫的例項名稱:

1.Data Source=Server Name.在該字串中必須包含的欄位就是資料庫的例項名稱.如果是使用本地的資料庫,可以為localhost或者是".",如果想要使用遠端的資料庫伺服器,就要把正確的伺服器給到Data Source屬性。在使用遠端資料庫伺服器的時候需要制定身份驗證方式:windows 和SQL Server身份驗證。

2.DataBase=DBName。指定連線到的資料來源,

3.User ID=UserName; Password=WebUser。資料庫所屬的登入名和密碼,如果在選擇身份驗證為SQL Server的時候,該項必須要。

4.pooling=true。 確定是否使用連線池。如果值為真的話,連線就要從適當的連線池中獲得,或者,如果需要的話,連線將被建立,然後被加入合適的連線池中。其預設值為真。

5.min pool size=5; max pool size=512 。連線池允許的連線數的最小值,其預設值為0。連線池允許的連線數的最大值,其預設值為100。

6.connect timeout = value。以秒為單位,一個連線到資料庫伺服器在connection timeout之前必須連上伺服器,否則就退出。

7.身份驗證。身份驗證支援兩種模式window和Sql Server,如果要使用windows驗證模式需要將Integrated Security的值設定為SSPI。SSPI是Security Support Provider Interface的首字母簡寫(安全性支援提供者介面)。在所有的window NT作業系統上都支援,是使用windows身份驗證可以使用的唯一介面,當把Integrated Security=SSPI等效於Integrated Security=true。如果使用了window驗證,上面的user ID和Password都不起效果了。

如果要使用SQL Server驗證模式,需要將Integrated Security=false。Integrated Security的值預設也是為false,所以也可以不加該欄位。

關鍵字

預設值

說明

應用程式名稱

N/A

應用程式的名稱,或者“.Net SqlClient Data Provider”(如果不提供應用程式名稱)。

Async

'false'

如果設定為true,則啟用非同步操作支援。可識別的值為true、false、yes和no。

AttachDBFilename

- 或 -

extended properties

- 或 -

Initial File Name

N/A

主資料庫檔案的名稱,包括可連線資料庫的完整路徑名。只有具有 .mdf 副檔名的主資料檔案才支援 AttachDBFilename。

如果主資料檔案為只讀,則附加操作將失敗。

該路經可以是絕對路徑,也可以是相對路徑,這取決於是否使用 DataDirectory 替換字串。如果使用 DataDirectory,則對應的資料庫檔案必須存在於替換字串指向的目錄的子目錄中。

說明:

遠端伺服器、HTTP 及 UNC 路徑名不受支援。

必須按照如下方式使用關鍵字“database”(或其別名之一)指定資料庫名稱:

"AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase"

如果資料檔案所在的目錄中存在日誌檔案,並且在附加主資料檔案時使用了“database”關鍵字,則會生成錯誤。這種情況下,請移除日誌檔案。附加了資料庫後,系統將根據物理路徑自動生成一個新的日誌檔案。

Connect Timeout

- 或 -

Connection Timeout

15

在終止嘗試併產生錯誤之前,等待與伺服器的連線的時間長度(以秒為單位)。

Context Connection

'false'

如果應對 SQL Server 進行程序內連線,則為true。

Current Language

N/A

SQL Server 語言記錄名稱。

Data Source

- 或 -

Server

- 或 -

Address

- 或 -

Addr

- 或 -

Network Address

N/A

要連線的 SQL Server 例項的名稱或網路地址。可以在伺服器名稱之後指定埠號:

server=tcp:servername, portnumber

指定本地例項時,始終使用 (local)。若要強制使用某個協議,請新增下列字首之一:

np:(local), tcp:(local), lpc:(local)

說明:

ADO.NET 2.0 不支援在 SQL Server 2000 或更低版本的共享記憶體上執行非同步命令。但是,可以強制用 TCP 代替共享記憶體,方法是:向連線字串中的伺服器名稱新增“tcp:”字首,或者使用“本地主機”。

Encrypt

'false'

當該值為true時,如果伺服器端安裝了證書,則 SQL Server 將對所有在客戶端和伺服器之間傳送的資料使用 SSL 加密。可識別的值為true、false、yes和no。

Enlist

'false'

true表明 SQL Server 連線池程式在建立執行緒的當前事務上下文中自動登記連線。

Failover Partner

N/A

在其中配置資料庫映象的故障轉移合作伙伴伺服器的名稱。

.NET Framework 1.0 或 1.1 版不支援 Failover Partner 關鍵字。

Initial Catalog

- 或 -

Database

N/A

資料庫的名稱。

Integrated Security

- 或 -

Trusted_Connection

'false'

當為false時,將在連線中指定使用者 ID 和密碼。當為true時,將使用當前的 Windows 帳戶憑據進行身份驗證。

可識別的值為true、false、yes、no以及與true等效的sspi(強烈推薦)。

MultipleActiveResultSets

'false'

如果為true,則應用程式可以維護多活動結果集 (MARS)。如果為false,則應用程式必須在執行該連線上的任何其他批處理之前處理或取消一個批處理中的多個結果集。

可識別的值為true和false。

.NET Framework 1.0 或 1.1 版不支援該關鍵字。

Network Library

- 或 -

Net

'dbmssocn'

用於建立與 SQL Server 例項的連線的網路庫。支援的值包括:

dbnmpntw(命名管道)

dbmsrpcn(多協議,Windows RPC)

dbmsadsn (Apple Talk)

dbmsgnet (VIA)

dbmslpcn(共享記憶體)

dbmsspxn (IPX/SPX)

dbmssocn (TCP/IP)

Dbmsvinn (Banyan Vines)

相應的網路 DLL 必須安裝在要連線的系統上。如果不指定網路而使用一個本地伺服器(比如“.”或“(local)”),則使用共享記憶體。在此示例中,網路庫為 Win32 Winsock TCP/IP (dbmssocn),使用的埠為 1433。

複製程式碼
Network Library=dbmssocn;Data Source=000.000.000.000,1433;

Packet Size

8192

用來與 SQL Server 的例項進行通訊的網路資料包的大小,以位元組為單位。

Password

- 或 -

Pwd

N/A

SQL Server 帳戶登入的密碼。建議不要使用。為保持高安全級別,我們強烈建議您使用Integrated Security或Trusted_Connection關鍵字。

Persist Security Info

'false'

當該值設定為false或no(強烈推薦)時,如果連線是開啟的或者一直處於開啟狀態,那麼安全敏感資訊(如密碼)將不會作為連線的一部分返回。重置連線字串將重置包括密碼在內的所有連線字串值。可識別的值為true、false、yes和no。

Replication

'false'

如果使用連線來支援複製,則為true。

Transaction Binding

Implicit Unbind

控制與登記的System.Transactions事務關聯的連線。

可能的值包括:

Transaction Binding=Implicit Unbind;

Transaction Binding=Explicit Unbind;

Implicit Unbind 可使連線在事務結束時從事務中分離。分離後,連線上的其他請求將以自動提交模式執行。在事務處於活動狀態的情況下執行請求時,不會檢查System.Transactions.Transaction.Current屬性。事務結束後,其他請求將以自動提交模式執行。

Explicit Unbind 可使連線保持連線到事務,直到連線關閉或呼叫顯式SqlConnection.TransactionEnlist(null)。如果Transaction.Current不是登記的事務或登記的事務未處於活動狀態,則引發InvalidOperationException。

TrustServerCertificate

'false'

如果設定為true,則使用 SSL 對通道進行加密,但不通過證書鏈對可信度進行驗證。如果將 TrustServerCertificate 設定為true並將 Encrypt 設定為false,則不對通道進行加密。可識別的值為true、false、yes和no。有關更多資訊,請參見連線字串語法 (ADO.NET)。

Type System Version

N/A

指示應用程式期望的型別系統的字串值。可能的值包括:

Type System Version=SQL Server 2000;

Type System Version=SQL Server 2005;

Type System Version=SQL Server 2008;

Type System Version=Latest;

如果設定為SQL Server 2000,將使用 SQL Server 2000 型別系統。與 SQL Server 2005 例項連線時,執行下列轉換:

XML 到 NTEXT

UDT 到 VARBINARY

VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分別到 TEXT、NEXT 和 IMAGE。

如果設定為SQL Server 2005,將使用 SQL Server 2005 型別系統。對 ADO.NET 的當前版本不進行任何轉換。

如果設定為Latest,將使用此客戶端-伺服器對無法處理的最新版本。這個最新版本將隨著客戶端和伺服器元件的升級自動更新。

User ID

N/A

SQL Server 登入帳戶。建議不要使用。為保持高安全級別,我們強烈建議您使用Integrated Security或Trusted_Connection關鍵字。

User Instance

'false'

一個值,用於指示是否將連線從預設的 SQL Server 速成版例項重定向到呼叫方帳戶下執行的執行時啟動的例項。

Workstation ID

本地計算機名稱

連線到 SQL Server 的工作站的名稱。

下表列出了ConnectionString內連線池值的有效名稱。For more information, seeSQL Server 連線池 (ADO.NET).

名稱

預設值

說明

Connection Lifetime

0

當連線被返回到池時,將其建立時間與當前時間作比較,如果時間長度(以秒為單位)超出了由Connection Lifetime指定的值,該連線就會被銷燬。這在聚集配置中很有用(用於強制執行執行中的伺服器和剛置於聯機狀態的伺服器之間的負載平衡)。

零 (0) 值將使池連線具有最大的連線超時。

Enlist

'true'

當該值為true時,池程式在建立執行緒的當前事務上下文中自動登記連線。可識別的值為true、false、yes和no。

Load Balance Timeout

0

連線被銷燬前在連線池中生存的最短時間(以秒為單位)。

Max Pool Size

100

池中允許的最大連線數。

Min Pool Size

0

池中允許的最小連線數。

Pooling

'true'

當該值為true時,系統將從適當的池中提取SQLConnection物件,或在需要時建立該物件並將其新增到適當的池中。可識別的值為true、false、yes和no。