mapper接口代码:
@param student 学生实例 * @return 成功操作的记录数目 *
int add(User user);
至于mapper.xml则分为两种情况了,一种是数据库(如MySQL,SQLServer)支持auto-generated key field,另一种是数据库(如Oracle)不支持auto-generated key field的。
1. 数据库(如MySQL,SQLServer)支持auto-generated key field的情况
方法1(推荐):
<insert id="add" parameterType="EStudent" useGeneratedKeys="true" keyProperty="id">
insert into User(name, age) values(#{name}, #{age})
</insert>
方法2:
<insert id="add" parameterType="User">
// 下面是SQLServer获取最近一次插入记录的主键值的方式
<selectKey resultType="_long" keyProperty="id" order="AFTER"> select @@IDENTITY as id </selectKey>
insert into TStudent(name, age) values(#{name}, #{age}) </insert>
由于方法2获取主键的方式依赖数据库本身,因此推荐使用方法1。
2. 数据库(如Oracle)不支持auto-generated key field的情况
<insert id="add" parameterType="User">
<selectKey keyProperty="id" resultType="_long" order="BEFORE"> select CAST(RANDOM * 100000 as INTEGER) a FROM SYSTEM.SYSDUMMY1 </selectKey>
insert into User(id, name, age) values(#{id}, #{name}, #{age}) </insert>
注意:mapper接口返回值依然是成功插入的记录数,但不同的是主键值已经赋值到实体的id中了。