Mybatis 執行乙個Sql命令的完整流程

2021-09-12 03:40:05 字數 1584 閱讀 8616

mybatis中的sql命令,在列舉類sqlcommandtype中定義的。

public

enum sqlcommandtype

public

inte***ce

引數rowbounds和resultsethandler是可選引數,表示分頁物件和自定義結果集處理器,一般不需要。

乙個完整的sql命令,其執行的完整流程圖如下:

上面的流程圖完整展示了其執行流程。

private

methodcache;

@override

public object invoke

(object proxy, method method, object[

] args)

throws throwable

catch

(throwable t)

}//

(method)

;execute

(sqlsession, args);}

(method method)

}

將sql命令,正確路由到恰當的sqlsession的方法上。

public

class

// 根據解析結果,路由到恰當的sqlsession方法上

public object execute

(sqlsession sqlsession, object[

] args)

else

if(sqlcommandtype.update == command.

gettype()

)else

if(sqlcommandtype.delete == command.

gettype()

)else

if(sqlcommandtype.select == command.

gettype()

)else

if(method.

returnsmany()

)else

if(method.

returnsmap()

)else

}else

if(sqlcommandtype.flush == command.

gettype()

)else

if(result == null && method.

getreturntype()

.isprimitive()

&&!method.

returnsvoid()

)return result;

}// ...

public

static

class

sqlcommand

MyBatis 動態SQL續上乙個

foreach的基本用法和屬性 foreach主要用在構建in條件中,它可以在sql與句中迭代乙個組合乙個集合。他的主要屬性有關資料 item 表示集合中每乙個元素進行迭代時的別名。index 指定乙個名稱,用於表示在迭代過程中,每次迭代到的位置 此處省略,未指定 collection 最關鍵並最容...

mybatis執行任意SQL

一 用乙個方法可靈活方便執任意自定義sql,不需要在xml或介面中宣告,以下是實現,採用註解,xml沒測試,應該類似。1 宣告乙個介面,裡面包括乙個超級sql方法 public inte ce sqldao list sql string sql,param param map param 2呼叫m...

Mybatis 特殊SQL的執行

1.模糊查詢 測試模糊查詢 param mohu return list testmohu param mohu string mohu select id testmohu resulttype user select from t user where username like select ...