<insert id="insertXXX" useGeneratedKeys="true" keyProperty="id" parameterType="com.lan.vote.model.User">
//SQL语句
</insert>
useGeneratedKeys:
取值范围:true|false 默认值是:false。
含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。MySQL和SQLServer执行auto-generated key field,因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取。但像Oralce等不支持auto-generated key field的数据库就不能用这种方法获取主键了。
keyProperty:
标记一个属性, MyBatis 会通过 getGeneratedKeys 或者通过 insert 语句的 selectKey 子元素设置它的值。默认: 不设置。
所示,我们在insert中指定了keyProperty="id",其中id代表插入的User对象的主键属性id(User对象中id名,非SQL字段名。User对象id对应SQL中主键字段)。
仅对 insert 有用。
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id= id;
}
//省略其它 get 和 set方法
}
User user = new User();
user.setUserName("chenzhou");
userDao.insertAndGetId(user);//插入操作
System.out.println("返回的主键为:"+user.getUserId());
<insert id="addUser" useGeneratedKeys="true" parameterType="com.lan.vote.model.User" keyProperty="id">
insert into User(name) values(#{name})
</insert>