ibatis学习笔记

注意点:

插入语句的时候有序列需要返回值:

<insert id="addStudent" parameterClass="Student">
insert into
tbl_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">
select
ACC_ID as id,
ACC_FIRST_NAME as firstName,
ACC_LAST_NAME as lastName,
ACC_EMAIL as emailAddress
from ACCOUNT
where <![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();



原文地址:https://www.cnblogs.com/dondming/p/4875764.html