select ifnull( max(id) , 0 ) + 1 from t_pandas
select nvl( max(id) , 0 ) + 1 from t_pandas
insert into t_pandas (
name ,
gender ,
birthdate ,
id) values (
# ,
# ,
# ,
#)
update t_pandas
name = #,
gender = # ,
birthdate = # ,
where id = #
使用 set 標籤可以產生 update 語句中的 set 字句。
同時,對於 set 字句中最後乙個字元如果是 逗號,mybatis 會將這個 逗號 剔除。
insert into t_humans
(gender ,
birthdate ,
married ,
name
)values
(# ,
# ,
'y' ,
'n' , #)
select id , name , gender , birthdate , married from t_humans
and gender = #
and married =
'y''n'
select id , name , gender , birthdate , married from t_humans
where name like #
insert into t_humans
( name , gender , birthdate , married )
values
( # , # , # , # )
delete from t_humans where
0">
id in
#1 = 2
10.1、過程( procedure )
資料庫中的過程( procedure ) ,就是儲存過程( stored procedure )。
10.1.1、 在mysql資料庫環境下,需要修改 delimiter
mysq > delimiter $
mysql > select now() from dual ;
-> select current_timestamp from dual ;
-> $
+---------------------+
| now() |
+---------------------+
| 2018-11-29 14:23:16 |
+---------------------+
1 row in set (0.00 sec)
+---------------------+
| current_timestamp |
+---------------------+
| 2018-11-29 14:23:16 |
+---------------------+
1 row in set (0.00 sec)
10.1.2、變數
在 mysql 中 , @ 開頭的是使用者自定義變數,首次在函式或過程中使用時即宣告
呼叫函式或過程時即宣告變數:
mysql> call count_human_male( @male_count ) ;
通過 select 可以查詢該變數的值:
mysql> select @male_count from dual ;
比如 事務隔離級別: @@tx_isolation
查詢系統變數,獲取當前事務的隔離級別
mysql> select @@tx_isolation from dual ;
修改當前會話的事務隔離級別 ( 讀未已提交 )
mysql> set session tx_isolation = 'read-uncommitted';
修改當前會話的事務隔離級別 ( 讀已提交 )
mysql> set session tx_isolation = 'read-committed';
修改當前會話的事務隔離級別 ( 可重複讀 )
mysql> set session tx_isolation = 'repeatable-read';
修改當前會話的事務隔離級別 ( 序列化 )
mysql> set session tx_isolation = 'serializable';
比如 事務提交方式: @@autocommit
查詢系統變數,獲取當前事務提交方式
mysql> select @@autocommit from dual ;
1 表示 自動提交 ( 每執行一條 dml 語句就提交一次事務 )
0 表示 手動提交 ( 需要通過 commit 來提交事務 或 通過 rollback 回滾事務 )
設定事務提交方式
mysql> set autocommit = false ; -- 不要再自動提交
mysql> set autocommit = true ; -- 自動提交 (預設值)
10.1.3、 開發 「過程」create procedure 過程名稱 ( 型別 名稱 資料型別 [ , 型別 名稱 資料型別 ] )
begin
-- 在 begin 和 end 之間書寫 過程要完成的操作
end
10.1.4、 引數型別delimiter $
create procedure add ( in a int , in b int )
begin
select a + b from dual ;
end$
delimiter ;
定義帶有傳出引數的過程:
delimiter $
create procedure count_human_male ( out mcount int )
begin
select count(*) from t_humans where gender = '男' into mcount ;
end ;
$delimiter ;
呼叫帶有傳出引數的 過程:
mysql> call 過程名稱( @使用者變數 )
比如呼叫 count_human_male 過程,並向其傳遞引數
mysql> call count_human_male( @male_count ) ;
通過查詢 male_1
vcount 變數來獲取 過程 傳出的數值
mysql> select @male_count from dual ;
函式( function )
資料庫中的函式( function ) ,也被某些人稱作 儲存函式( stored function )。
Mybatis 最近知識總結(1)
你不得不承認 在專案中 如果不遇見問題 你是不會去了解 和 的區別的 我見過好多專案中用的是 但是不提倡 1 將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by job 如果傳入的值是programer,那麼解析成sql時的值為order by programer 如果...
mybatis知識點總結
1 resultmap resulttype parametertype parametermap的區別 2 的區別 1 將傳入的資料都當成是乙個字串,會自動對傳入的資料加上乙個雙引號 2 是乙個替換的功能 3 方式可以很大程度上防止sql注入 4 一般用於傳入資料庫物件,例如傳入表名 5 myba...
mybatis總結的知識點
原始碼中configuration這個類是解析所有配置檔案的 有幾種執行器 executortype中有三種列舉型別 simpe簡單的 預設的 reuse復用的 batch批量的 預設的一級快取是開啟的還是關閉的 在configuration中有乙個cacheenabled true 這個開啟後就開...