方式1:
<!-- id为方法名,parameterType:可以省略
获取自增主键的方法:
mysql支持自增主键,自增主键值的获取,
mybatis也是利用statement.getGenreatedKeys()
配置useGeneratedKeys="true":使用自增主键获取主键值策略
keyProperty:指定对应的主键属性,也就是mybatis获取主键值以后,
将这个值封装给javaBean的哪个属性
-->
<insert id="addEmp1" parameterType="com.yilu.mybatis.dao.EmployeeMapper"
useGeneratedKeys="true" keyProperty="id">
insert into tbl_employee(last_name,email,gender)
values(#{lastName},#{email},#{gender})
</insert>
方式2:
<insert id="addEmp2" parameterType="com.yilu.mybatis.dao.EmployeeMapper">
insert into tbl_employee(last_name,email,gender)
values(#{lastName},#{email},#{gender})
<selectKey resultType="int" keyProperty="id" order="AFTER">
select @@identity
</selectKey>
</insert>
方式3:
<insert id="addEmp3" parameterType="com.yilu.mybatis.dao.EmployeeMapper">
insert into tbl_employee(last_name,email,gender)
values(#{lastName},#{email},#{gender})
<selectKey resultType="int" keyProperty="id" order="AFTER">
select last_insert_id();
</selectKey>
</insert>
其方式2和方式3中标签属性说明:
映射文件的标签中,其子标签用于获取新插入记录的主键值;
resultType:指出获取主键的类型;
keyProperty:指出主键在java类中对应的属性名,会将获取的主键值直接封装到被插入的实体对象中;
order:指出id的生成相对insert语句的执行是在前还是在后。Mysql数据库表中的id,均是在先执行insert语句,后生成id,所以需要设置为AFTER; Oracle数据库表中的id,是在insert执行之前生成,需要设置为BEFORE。