对于自增主键在某些业务中保存一个对象后,需要使用到这个主键完成后续的业务逻辑,就需要获取该主键值。
1、在接口中定义新增方法
int addStudent(Student student);
2、在mapper中配置新增配置
方式一:
- <insert id="addStudent" parameterType="Student" useGeneratedKeys="true" keyProperty="sid">
- insert into student(sname,sgender,sage,semail,sphoto) values (#{sname},#{sgender},#{sage},#{semail},#{sphoto});
- </insert>
useGeneratedKeys: 表示开启获取自增主键值。
keyProperty:表示从表中取到主键值后赋给Student类中的哪个属性。
方式二:
- <insert id="addStudent" parameterType="Student">
- <selectKey resultType="int" keyProperty="sid" keyColumn="sid" order="AFTER">
- select last_insert_id();//查询自增的主键值
- </selectKey>
- insert into student(sname,sgender,sage,semail,sphoto) values (#{sname},#{sgender},#{sage},#{semail},#{sphoto});
- </insert>
keyColumn: 指定取数据库中哪一列的值(通常指主键列)。
keyProperty: 表示取出主键值后赋值Student对象的哪个属性。
resultType: 表示对象的属性类型
order:表示完后sql语句之前还是之后把主键值赋给实体类对应属性。
3、测试
两种方法测试结果相同
- @Test
- public void t01() {
- SqlSession sqlSession = SqlSessionUtil.getSqlSession();
- StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
- Student student = new Student(0, "tom", "男", 18, "[email protected]", "");
- System.out.println(student);
- int rows = studentDao.addStudent(student);
- System.out.println(rows);
- System.out.println(student);
- SqlSessionUtil.closeSqlSession(sqlSession);
- }
结果:
标签:sname,student,sage,semail,自增主,键值,Student,mybatis From: https://www.cnblogs.com/echosada/p/17830077.html