標籤:
注意點:
插入語句的時候有序列需要傳回值:
<insert id="addStudent" parameterClass="Student">insert intotbl_student(name,birth,score) values(#name#,#birth#,#score#)<selectKey resultClass="int" keyProperty="id">select @@identity as inserted<!-- 這裡需要說明一下不同的資料庫主鍵的產生,對各自的資料庫有不同的方式: --><!-- mysql:SELECT LAST_INSERT_ID() AS VALUE --><!-- mssql:select @@IDENTITY as value --><!-- oracle:SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL --><!-- 還有一點需要注意的是不同的資料庫生產商產生主鍵的方式不一樣,有些是預先產生 (pre-generate)主鍵的,如Oracle和PostgreSQL。有些是事後產生(post-generate)主鍵的,如MySQL和SQL Server 所以如果是Oracle資料庫,則需要將selectKey寫在insert之前 --></selectKey></insert>
typealias 類的別名,定義別名後使用時不需要一大串包名的類全名
resultMap SQL 欄位與類屬性的映射關係,避免在 SQL 陳述式中使用 as 轉換欄位別名
parameterClass 參數類型
resultClass 傳回型別,使用 resultClass 不使用 resultMap 時就使用 as 讓欄位和屬性名稱
稱一致
包含大於符號<、小於符號>等特殊字元<select id="select" parameterClass="int" resultClass="Account">selectACC_ID as id,ACC_FIRST_NAME as firstName,ACC_LAST_NAME as lastName,ACC_EMAIL as emailAddressfrom ACCOUNTwhere <![CDATA[ACC_ID > #id#]]></select>
SqlMapClient API • sqlMapper.queryForList • sqlMapper.queryForObject • sqlMapper.queryForMap • sqlMapper.queryForPaginatedList • sqlMapper.queryWithRowHandler • sqlMapper.insert • sqlMapper.update • sqlMapper.delete
SqlMapClient 實際是一個介面並不是類
SqlMapClientBuilder.buildSqlMapClient()方法返回的是
com.iBATIS.sql.engine.impl.SqlMapClientImpl 類。
批處理
將 startBatch 與 executeBatch 之間的語句一次一起提交執行,減少與資料庫的互動數次,
提高執行效能,如:
sqlMapper.startBatch();
要執行的語句……
sqlMapper.executeBatch();
ibatis學習筆記