注意点:
插入语句的时候有序列需要返回值:
<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();
时间: 2024-10-06 21:46:11