今天给表加了个字段,执行新增后查看表,发现数据库执行新增完成后,字段写值错乱了,表现为这两个字段的值写反了↓↓↓↓↓↓
排查了xml中所有赋值的地方,全都没有问题
字段与属性的通用映射: <resultMap type="MineEnterprise" id="MineEnterpriseResult"><result property="ids" column="ids" /><result property="sheng_name" column="sheng_name" />
通用查询SQL: <sql id="selectMineEnterpriseVo">select id,ids, sheng_name, ..... <sql>
以及查询List、查询ById、修改等SQL都没问题;
但是这里注意看一下insert SQL:
insert SQL: <insert id="insertXXX" parameterType="MineEnterprise">insert into XXX表名<trim prefix="(" suffix=")" suffixOverrides=","><if test="id != null">id,</if> 6 <if test="sheng_name != null">sheng_name,</if> 7 <iftest="ids!= null">ids,</if> . . .</trim> <trim prefix="values (" suffix=")" suffixOverrides=","><if test="id != null">#{id},</if> 21 <if test="ids!= null">#{ids},</if> 22 <if test="sheng_name!= null">#{sheng_name},</if>. . .</trim> </insert>
</trim>和<trim >标签里面这两个字段的insert列出的字段6,7行,和21,22行映射顺序对比是反的,这就导致了映射顺序反了,因为上面生成的SQL是:
insert into XXX表名 ( id ,sheng_name ,ids...... )values( id ,ids,sheng_name ...... )
所以,赋值的时候就
把 sheng_name的值赋值给了ids.
把 ids的值赋值给了sheng_name
所以说在这次进行错误的insert后,再继续执行新增,就会出现SQL主键唯一写表失败的异常↓↓↓↓↓↓↓↓