一、在 SQL 映射文件的 select
标签中添加 useGeneratedKeys="true"
属性与 keyProperty=" "
属性,keyProperty
的值表示的是将获取到的自增主键值赋给 JavaBean 中的某个字段。
<!--
useGeneratedKeys 设置为 true
keyProperty 表示把获得的自增主键的值赋给 javabean 中的哪个属性,
这里表示赋值给 employee 的 id 属性
-->
<insert id="addEmp" parameterType="employee"
useGeneratedKeys="true" keyProperty="id">
insert into t_employee(username, gender, email) values (#{username}, #{gender}, #{email})
</insert>
二、 测试,通过 javabean 的get()
方法即可获得自增主键的值。
@Test
public void addEmpTest() throws IOException {
// MyBatis 全局配置文件的路径
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
// 注意在这里设置为自动提交数据
SqlSession sqlSession = sqlSessionFactory.openSession(true);
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = new Employee(null, "Jas", '1', "gdfg@foxmail.com");
employeeMapper.addEmp(employee);
System.out.println(employee.getId());
}
测试结果:
注意:sqlSessionFactory.openSession(true)
方法要设置为自动提交数据,否则会获得自增主键的值,但是在数据库中不会插入数据。