原mapper.xml文件
<insert id="insert" parameterType="com.beauty.time.entity.Item">
insert into item (id, item_name, create_time,user_no,
update_time, isdeleted)
values (#{id,jdbcType=BIGINT}, #{itemName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},#{userNo,jdbcType=VARCHAR},
#{updateTime,jdbcType=TIMESTAMP}, #{isdeleted,jdbcType=INTEGER})
</insert>
修改后,带下划线的是表的字段名,有大写字母的是类里面参数名
<sql id="itemColumns">
<trim suffixOverrides=",">
<if test="id != null">id,</if>
<if test="itemName != null">item_name,</if>
<if test="createTime != null">create_time,</if>
<if test="userNo != null">user_no,</if>
<if test="updateTime != null">update_time,</if>
<if test="isdeleted != null">isdeleted</if>
</trim>
</sql>
<sql id="itemValues">
<trim suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="itemName != null">#{itemName},</if>
<if test="createTime != null">#{createTime}</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="isdeleted != null">#{isdeleted},</if>
<if test="userNo != null">#{userNo}</if>
</trim>
</sql>
<insert id="insert" parameterType="com.beauty.time.entity.Item">
insert into item(<include refid="itemColumns"/>)
values (<include refid="itemValues"/>)
</insert>
原因的话看这篇文章,大概就是什么字段不插入就不要在insert中写。全字段的插入语句对defaul的设置会失效。