SQL 關於mybatis的sql一些引數

2021-10-06 22:59:13 字數 936 閱讀 8614

selectkey在mybatis中是為了解決insert資料時不支援主鍵自動生成的問題,他可以很隨意的設定生成主鍵的方式。

statement是要執行的sql語句,它的返回值通過resulttype來指定

before表示查詢語句statement執行的時機

keyproperty表示查詢結果賦值給**中的哪個物件,keycolumn表示將查詢結果賦值給資料庫表中哪一列

keyproperty和keycolumn都不是必需的,有沒有都可以

before=true,插入之前進行查詢,可以將查詢結果賦給keyproperty和keycolumn,賦給keycolumn相當於更改資料庫

befaore=false,先插入,再查詢,這時只能將結果賦給keyproperty

賦值給keyproperty用來「讀」資料庫,賦值給keycolumn用來寫資料庫

selectkey的兩大作用:1、生成主鍵;2、獲取剛剛插入資料的主鍵。

使用selectkey,並且使用mysql的last_insert_id()函式時,before必為false,也就是說必須先插入然後執行last_insert_id()才能獲得剛剛插入資料的id

這個註解的功能與 標籤完全一致,用在已經被 @insert 或 @insertprovider 或 @update 或 @updateprovider 註解了的方法上。若在未被上述四個註解的方法上作 @selectkey 註解則視為無效。如果你指定了 @selectkey 註解,那麼 mybatis 就會忽略掉由 @options 註解所設定的生成主鍵或設定(configuration)屬性。

屬性有:

statement 填入將會被執行的 sql 字串陣列,

keyproperty 填入將會被更新的引數物件的屬性的值,

before 填入 true 或 false 以指明 sql 語句應被在插入語句的之前還是之後執行。

SQL注入和Mybatis預編譯防止SQL注入

所謂sql注入,就是通過把sql命令插入到web表單提交或頁面請求url的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意 的sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,而不是按...

Mybatis的orderby引起的sql注入

sql中兩種傳引數的方式 這種是經過預編譯的,不會有sql注入 這種僅僅取變數的值,可以有sql注入 但是在orderby中之能用 用 會導致排序不生效。例如,傳入值為name時 用 select from student order by 會變成 select from student order...

spring整合mybatis後,列印SQL語句

網上說mybatis的早前版本配置列印sql還比較簡單,在3.0.6之後配置方式修改了。現在的spring mybatis.xml配置如下 不錯,列印sql只需要加乙個setting就可以了。mybatis的日誌列印方式比較多,slf4j log4j log4j2 jdk logging commo...