1、useGeneratedKeys=”true” 可以获取自增长的ID 只支持具有自增长方式的那种数据库(mysql, mssql 等 但 oracle 就不支持了 )
<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="User">
insert into user(userName,password,comment)
values(#{userName},#{password},#{comment})
</insert>
User user = new User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");
System.out.println("插入前主键为:"+user.getUserId()); //没有 0
userDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId()); //userId 的值
2.对于不支持自动生成主键(如Oracle),可以采用以下方式
<insert id="insert" parameterType="com.test.User">
<selectKey resultType="INTEGER" order="BEFORE" keyProperty="userId">
SELECT SEQ_USER.NEXTVAL as userId from DUAL
</selectKey>
insert into user (user_id, user_name, modified, state)
values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{modified,jdbcType=TIMESTAMP}, #{state,jdbcType=INTEGER})
</insert>