推薦參考mybatis官方文檔贤旷,文檔里面有詳細講解教程叮姑,中文文檔
insert, update 和 delete 屬性詳解
屬性 | 描述 |
---|---|
id |
在命名空間中唯一的標(biāo)識符唉地,可以被用來引用這條語句。 |
parameterType |
將會傳入這條語句的參數(shù)的類全限定名或別名传透。這個屬性是可選的耘沼,因為 MyBatis 可以通過類型處理器(TypeHandler)推斷出具體傳入語句的參數(shù),默認值為未設(shè)置(unset)朱盐。 |
parameterMap |
用于引用外部 parameterMap 的屬性群嗤,目前已被廢棄。請使用行內(nèi)參數(shù)映射和 parameterType 屬性兵琳。 |
flushCache |
將其設(shè)置為 true 后狂秘,只要語句被調(diào)用,都會導(dǎo)致本地緩存和二級緩存被清空躯肌,默認值:(對 insert者春、update 和 delete 語句)true。 |
timeout |
這個設(shè)置是在拋出異常之前清女,驅(qū)動程序等待數(shù)據(jù)庫返回請求結(jié)果的秒數(shù)钱烟。默認值為未設(shè)置(unset)(依賴數(shù)據(jù)庫驅(qū)動)。 |
statementType |
可選 STATEMENT嫡丙,PREPARED 或 CALLABLE拴袭。這會讓 MyBatis 分別使用 Statement,PreparedStatement 或 CallableStatement迄沫,默認值:PREPARED稻扬。 |
useGeneratedKeys |
(僅適用于 insert 和 update)這會令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法來取出由數(shù)據(jù)庫內(nèi)部生成的主鍵(比如:像 MySQL 和 SQL Server 這樣的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的自動遞增字段),默認值:false羊瘩。 |
keyProperty |
(僅適用于 insert 和 update)指定能夠唯一識別對象的屬性泰佳,MyBatis 會使用 getGeneratedKeys 的返回值或 insert 語句的 selectKey 子元素設(shè)置它的值盼砍,默認值:未設(shè)置(unset )。如果生成列不止一個逝她,可以用逗號分隔多個屬性名稱浇坐。 |
keyColumn |
(僅適用于 insert 和 update)設(shè)置生成鍵值在表中的列名,在某些數(shù)據(jù)庫(像 PostgreSQL)中黔宛,當(dāng)主鍵列不是表中的第一列的時候近刘,是必須設(shè)置的。如果生成列不止一個臀晃,可以用逗號分隔多個屬性名稱觉渴。 |
databaseId |
如果配置了數(shù)據(jù)庫廠商標(biāo)識(databaseIdProvider),MyBatis 會加載所有不帶 databaseId 或匹配當(dāng)前 databaseId 的語句徽惋;如果帶和不帶的語句都有案淋,則不帶的會被忽略。 |
返回插入數(shù)據(jù)后的主鍵值id
如果你的數(shù)據(jù)庫支持自動生成主鍵的字段(比如 MySQL 和 SQL Server)险绘,那么你可以設(shè)置 useGeneratedKeys=”true”踢京,然后再把 keyProperty 設(shè)置為目標(biāo)屬性就 OK 了。
mapper.xml:
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into Author (username,password,email,bio)
values (#{username},#{password},#{email},#{bio})
</insert>
然后通過get獲取主鍵id即可宦棺,上面代碼中我設(shè)置的keyProperty="id"瓣距,所以Java中g(shù)etId()即可
insertUser(user);
int id = user.getId(); //獲取到的主鍵id