Mybatis中插入记录获取主键值

在数据库中主键的值是通过自动递增的方式创建的,然而在通过mybatis插入数据之后想获取插入数据的主键值可以通过下面两种方法:
方法一:
在xml的配置文件中的insert标签中加入标签

<insert id="insert">
		<selectKey keyProperty="id" resultType="int" order="AFTER">
			select LAST_INSERT_ID()
		selectKey>
		insert into t_student(uname,pass,stu_name,gender,birthdate,score)
		values(#{uname},#{pass},#{stu_name},#{gender},#{birthdate},#{score})
	insert>
public static void doInsert() {
		SqlSession sqlSession = MybatisUtil.getSqlSession();
		Student s = new Student();
		s.setBirthdate("2020-01-01");
		s.setGender('1');
		s.setPass("123");
		s.setScore(69.3);
		s.setStu_name("张四");
		s.setUname("jack");
		int i = sqlSession.insert("student.insert",s);
		System.out.println("i="+i);
		System.out.println("新插入的学生的id为:"+s.getId());
		sqlSession.commit();
		sqlSession.close();
	}

注意:
selectKey标签中的 select LAST_INSERT_ID() 语句就能获取生成的主键
selectKey标签中的keyProperty属性就是主键名,MyBatis会自动将获取的主键封装给此属性。
order的值有两种:BEFORE、AFTER
BEFORE:先获取主键,然后执行insert; 比如 Oracle数据库。
AFTER:先执行insert,然后获取主键; 比如 MySql数据库。

方法二:
在select标签中加入useGeneratedKeys=“true” keyProperty=“id”

	<insert id="insert2" useGeneratedKeys="true" keyProperty="id">
		insert into t_student(uname,pass,stu_name,gender,birthdate,score)
		values(#{uname},#{pass},#{stu_name},#{gender},#{birthdate},#{score})
	insert>

在这里插入图片描述

你可能感兴趣的:(SSM,数据库,mysql)