1.Java代码:
1.1 entity类:
User.java
public class User {
private int userId;
private String userName;
private String password;
private String comment;
//这里要添加 setter and getter 略
}
1.2 DAO类:
UserDao.java
public interface UserDao {
public int insertAndGetId(User user);
}
2.Xml代码 :
方法:在mapper中指定keyProperty属性,示例如下:(注意:这里不需要 resultType属性!)
<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.test.mybatis.User">
insert into user(userName,password,comment)
values(#{userName},#{password},#{comment})
</insert>
如上所示,我们在insert中指定了keyProperty="userId",其中userId代表插入的User对象的主键属性。
说明:
useGeneratedKeys: 取值范围 true | false 默认值是:false。 含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。
keyProperty: 是JAVA对象的属性名(这里对应的是User.java的userId)。
3. 测试:
Java代码
User user = new User();
user.setUserName("张三");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");
System.out.println("插入前主键为:"+user.getUserId());
UserDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId()); //注意:这里取的取值.