MyBatis获取自增主键与非自增主键
需要通过useGeneratedKeys 以及 keyProperty
<!-- 在mysql数据库中,每张表的自增列只能有一个 -->
<!-- useGeneratedKeys 使用自动生成的主键,keyProperty将自动生成的主键映射给那个属性 -->
<insert id="insertEmployee" useGeneratedKeys="true" keyProperty="id">
insert into t_employees(empName,gender,email) values(#{empName},#{gender},#{email})
</insert>
<!-- 如何获取非自增主键 -->
<insert id="insertEmployeeAutoFillId">
<!-- 查询主键,在核心sql语句之前运行一个查询sql查到的id,将查询到的id复制给javabean的id属性使用 -->
<selectKey order="BEFORE" resultType="integer" keyProperty="id">
select max(id)+1 from t_employees
</selectKey>
insert into t_employees(id,empName,gender,email) values(#{id},#{empName},#{gender},#{email})
</insert>
MP 获取自增主键
自动将主键值回写到实体类中
@Test
public void testCommonInsert() {
Employee em = new Employee(null,"Lilith","Lilith@Sina.com",0,10);
em.setSalary(20000.0);
Integer insertRes = employeeMapper.insert(em);
System.out.println("insertRes ======= " + insertRes);
//获取当前数据在数据库中的主键值
Integer id = em.getId();
System.out.println("id ====== " + id);
}
虽然id传入的是null,得到自增值后会回写给id
本文详细介绍了在MyBatis框架中如何处理自增主键与非自增主键的生成策略。对于自增主键,利用useGeneratedKeys与keyProperty属性实现主键的自动回写;对于非自增主键,通过selectKey元素预先计算并设置主键值。同时,展示了MyBatis Plus在插入操作中自动回写主键值的便捷性。
1880

被折叠的 条评论
为什么被折叠?



