mybatis返回自增主键值

对于自增主键在某些业务中保存一个对象后,需要使用到这个主键完成后续的业务逻辑,就需要获取该主键值。

1、在接口中定义新增方法

    int addStudent(Student student);

2、在mapper中配置新增配置

方式一:

  1. <insert id="addStudent" parameterType="Student" useGeneratedKeys="true" keyProperty="sid">
  2. insert into student(sname,sgender,sage,semail,sphoto) values (#{sname},#{sgender},#{sage},#{semail},#{sphoto});
  3. </insert>

useGeneratedKeys: 表示开启获取自增主键值。

keyProperty:表示从表中取到主键值后赋给Student类中的哪个属性。

方式二:

  1. <insert id="addStudent" parameterType="Student">
  2. <selectKey resultType="int" keyProperty="sid" keyColumn="sid" order="AFTER">
  3. select last_insert_id();//查询自增的主键值
  4. </selectKey>
  5. insert into student(sname,sgender,sage,semail,sphoto) values (#{sname},#{sgender},#{sage},#{semail},#{sphoto});
  6. </insert>

keyColumn: 指定取数据库中哪一列的值(通常指主键列)。

keyProperty: 表示取出主键值后赋值Student对象的哪个属性。

resultType: 表示对象的属性类型

order:表示完后sql语句之前还是之后把主键值赋给实体类对应属性。

3、测试

两种方法测试结果相同

  1. @Test
  2. public void t01() {
  3. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  4. StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
  5. Student student = new Student(0, "tom", "男", 18, "mary@qq.com", "");
  6. System.out.println(student);
  7. int rows = studentDao.addStudent(student);
  8. System.out.println(rows);
  9. System.out.println(student);
  10. SqlSessionUtil.closeSqlSession(sqlSession);
  11. }

结果:

posted @ 2023-11-13 20:19  echosada  阅读(276)  评论(0)    收藏  举报