JDBC Request需要配合JDBC Connection Configuration一起使用,JDBC Connection Configuration進行連接,JDBC Request進行請求,下面針對兩個配置進行摘錄
JDBC Connection Configuration 配置
Variable Name Bound to Pool:
| 元素 | 功能 |
|---|---|
| Variable Name for created pool | 資料庫連接池名稱 |
| Max Number of Connections | 資料庫最大連接數,在大多數情況下,將其設定為0,這意味著每個執行緒將得到它自己的池,其中只有一個連接,即執行緒之間不共享連接,如果您真的想要使用共享池,那么將max count與執行緒數相同,以確保執行緒不會相互等待, |
| Max Wait(ms) | 在連接池中取回連接最大等待時間 |
| Time Between Eviction Runs(ms) | 在空閑物件驅逐執行緒運行期間,可以休眠的毫秒數,當非正值時,將運行無空閑物件驅逐器執行緒,(默認為“60000”,1分鐘)(如果當前連接池中某個連接在空閑了time Between Eviction Runs Millis時間后任然沒有使用,則被物理性的關閉掉,) |
| Auto Commit | 自動提交sql陳述句 |
| Transaction Isolation | 設定事務的隔離級別 |
| Preinit Pool | 立即初始化連接池,如果為 False,則第一個 JDBC 請求的回應時間會較長,因為包含了連接池建立的時間 |
| Init SQL statements separated by new line | SQL陳述句的集合,將在首次創建物理連接時用執行它們,這些陳述句僅執行一次,在創建連接時執行 |
五種事務隔離級別:
1).TRANSACTION_NONE 不支持事務
2).TRANSACTION_READ_UNCOMMITTED 讀未提交,允許臟讀,不可重復讀和幻讀
3).TRANSACTION_READ_COMMITTED 讀已提交,禁止臟讀,但允許不可重復讀和幻讀
4).TRANSACTION_REPEATABLE_READ 重復讀,禁止臟讀和不可重復讀,允許幻讀
5).TRANSACTION_SERIALIZABLE 串行化,禁止臟讀,不可重復讀和幻讀
6).DEFAULT 資料庫默認的隔離方式
臟讀(dirty read):一個事務讀取了另一個事務尚未提交的資料
不可重復讀(Non-Repeatable Reads):一個事務的操作導致另一個事務前后兩次讀取到不同的資料
幻讀(Phantom Reads):一個事務的操作導致另一個事務前后兩次查詢的結果資料量不同
| 元素 | 功能 |
|---|---|
| Test While Idle | 當空閑的時候測驗連接是否斷開 |
| Soft Min Evictable Idle Time | 連接在連接池中閑置的最小時間,超出此閑置時間連接才會被回收,默認值為5000ms |
| Validation Query | 用于確定資料庫是否仍在回應的簡單查詢陳述句 |
| Database URL | JDBC資料庫的連接字串,eg: jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true |
| JDBC Driver class | JDBC驅動 |
| ussername | 資料庫登錄的用戶名 |
| Password | 資料庫登錄的密碼 |
| Connection Properties | 建立連接時要設定的連接屬性 |
Validation Query 選項:
hsqldb選擇:select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
Oracle選擇:select 1 from dual
DB2選擇:select 1 from sysibm.sysdummy1
MySQL/SQL Server/PostgreSQL/Ingres/Derby/H2選擇:select 1
Firebird選擇: select 1 from rdb$database
不同的資料庫和JDBC驅動程式相對于Database URL和JDBC Driver class不一樣,以下是常用的幾種:
| 資料庫型別 | JDBC Driver class | Database URL |
|---|---|---|
| MySQL | com.mysql.jdbc.Driver | jdbc:mysql://host[:port]/dbname |
| HSQLDB | org.hsqldb.jdbc.JDBCDriver | |
| Oracle | oracle.jdbc.OracleDriver | jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid}))) |
| DB2 | com.ibm.db2.jcc.DB2Driver | com.ibm.db2.jdbc.app.DB2Driver |
| PostgreSQL | org.postgresql.Driver | jdbc:postgresql:{dbname} |
| Microsoft.jdbc.sqlserver | com.microsoft.jdbc.sqlserver.SQLServerDriver | jdbc:microsoft:sqlserver://host[:port];DatabaseName={databasename} |

JDBC Request 配置
| 元素 | 功能 |
|---|---|
| Variable Name of Pool declared in JDBC Connection Configuration | 資料庫連接池的名字,需要與JDBC Connection Configuration的Variable Name Bound Pool名字保持一致 |
| Query Type | |
| Qurey | 查詢陳述句,未尾不要加“;”,(SQL中的資料可通過${變數名}獲取到已定義的值 ) |
| Parameter values | 引數值(1、可代替Query中的?占位符資料,多個占位符用逗號隔開;2、引數值可通過${變數名}獲取到已定義的值 |
| Parameter types | 引數型別(與Parameter value的資料一一對應的資料型別,多個用逗號隔開) |
| Variable name | 保存sql陳述句回傳結果的變數名,可通過debug取樣器查看結果 |
| Result variable name | 創建一個物件變數,保存所有回傳的結果,獲取具體值的方法:columnValue = vars.getObject(“resultObject”).get(0).get(“Column Name”) |
| Query timeout | 查詢超時時間 |
| Limit ResultSet | 設定回傳結果的資料條數 |
Variable name的使用規則:(參考https://www.cnblogs.com/puresoul/p/4908014.html)
如果給這個引數設定了值,它會保存sql陳述句回傳的資料和回傳資料的總行數,假如,sql陳述句回傳2行,3列,且variables names設定為A,C,那么如下變數會被設定為:
A_#=2 (總行數)
A_1=第1列, 第1行
A_2=第1列, 第2行
C_#=2 (總行數)
C_1=第3列, 第1行
C_2=第3列, 第2行
如果回傳結果為0,那么A_#和C_#會被設定為0,其它變數不會設定值,
如果第一次回傳6行資料,第二次只回傳3行資料,那么第一次那多的3行資料變數會被清除,
可以使用${A_#}、${A_1}…來獲取相應的值

實體
使用占位符查詢 melotpay.melotpay.agency_info表中role=2的前三條記錄對應的agencyid、userno值,結果使用變數名a,b保存,并且回傳結果創建的物件c

查看回傳結果:


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336218.html
標籤:其他
下一篇:hibernate關聯關系
