场景
插入记录之后,需要用新增的id。
根据其他条件重新查吗?
当然不,因为不但费事,而且代码也很丑陋。
解决方案
mybatis肯定有对应的解决方案啊。
先有个sequence,创建方法这里不详述了。
直接上干货,Mapper.xml:
<insert id="insertSelective" parameterType="com.common.model.User">
<!-- keyProperty: 将序列号设置到对象中,且在controller中可以使用 -->
<selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="id">
SELECT T_USER_SEQUENCE.nextval id from dual
</selectKey>
insert into T_S_INVOICE_DOCUMENT
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null and id!=''">
ID,
</if>
<if test="fileName != null and fileName!=''">
FILE_NAME,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=DECIMAL},
</if>
<if test="fileName != null and fileName!=''">
#{fileName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
java代码:
int i = userMapper.insertSelective(user);
logger.info("i:{}",i);
logger.info("user:{}", JSON.toJSONString(user));
根据日志可以看出id已经返回到user对象里了。