需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。


方法:在mapper中指定keyProperty属性,示例如下:

Xml代码  MyBatis+MySQL 返回插入的主键ID _mysql mybaties
  1. <insertid="insertAndGetId"useGeneratedKeys="true"keyProperty="userId"parameterType="com.chenzhou.mybatis.User">

  2.    insert into user(userName,password,comment)  

  3.    values(#{userName},#{password},#{comment})  

  4. </insert>

如上所示,我们在insert中指定了keyProperty="userId",其中userId代表插入的User对象的主键属性。


User.java

Java代码  MyBatis+MySQL 返回插入的主键ID _mysql mybaties
  1. publicclass User {  

  2. privateint userId;  

  3. private String userName;  

  4. private String password;  

  5. private String comment;  

  6. //setter and getter

  7. }  

UserDao.java

Java代码  MyBatis+MySQL 返回插入的主键ID _mysql mybaties
  1. publicinterface UserDao {  

  2. publicint insertAndGetId(User user);  

  3. }  

测试:

Java代码  MyBatis+MySQL 返回插入的主键ID _mysql mybaties
  1. User user = new User();  

  2. user.setUserName("chenzhou");  

  3. user.setPassword("xxxx");  

  4. user.setComment("测试插入数据返回主键功能");  

  5. System.out.println("插入前主键为:"+user.getUserId());  

  6. userDao.insertAndGetId(user);//插入操作

  7. System.out.println("插入后主键为:"+user.getUserId());  

输出:

Shell代码  MyBatis+MySQL 返回插入的主键ID _mysql mybaties
  1. 插入前主键为:0

  2. 插入后主键为:15

查询数据库:

 MyBatis+MySQL 返回插入的主键ID _mysql mybaties_06


如上所示,刚刚插入的记录主键id为15