mybatis知識總結

2021-09-02 05:09:48 字數 3911 閱讀 8359

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 這個開啟後就開...