在使用Mybatis操作数据库,涉及自动增长主键如何获得,以便后续代码使用的方式如下。
1.数据库设置自增键
这里是def_id
字段。
2.MyBatis写法
<insert id="insertSysProcessDef" parameterType="com.ruoyi.system.domain.SysProcessDef" useGeneratedKeys="true"
keyProperty="defId" keyColumn="def_id">
insert into sys_process_def
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="defName != null">def_name,</if>
<if test="defType != null">def_type,</if>
<if test="typeValue != null">type_value,</if>
<if test="applicantIdentity != null">applicant_identity,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="defName != null">#{defName},</if>
<if test="defType != null">#{defType},</if>
<if test="typeValue != null">#{typeValue},</if>
<if test="applicantIdentity != null">#{applicantIdentity},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
主要是useGeneratedKeys、keyProperty、keyColumn三个属性。
3.service方法
@Transactional
@Override
public int insertSysProcessDef(SysProcessDef sysProcessDef) {
sysProcessDef.setDelFlag("0");
sysProcessDef.setCreateTime(DateUtils.getNowDate());
sysProcessDef.setCreateBy(SecurityUtils.getUsername());
int i = sysProcessDefMapper.insertSysProcessDef(sysProcessDef);
return i;
}
注意:返回的主键,是参数sysProcessDef的属性defId对应值,而不是i。