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...