如题,在mybatis的xml配置一个表的sql语句,发现我的字段名为check和use的时候,就会报错,后来查了下,原来是因为mysql的关键字冲突了,可以给表名取一个别名,然后引用就可以了:
<!-- 更新一条医疗费用记录 -->
<update id="updateMedicalAdd">
update retire_infor_medical rm
set rm.check = #{check},hospital_starttime=#{hospital_starttime},
fee=#{fee},rm.use=#{use},way=#{way},isUnion=#{isUnion},
comment = #{comment}
where retire_infor_id = #{retireInforId} and DATE_FORMAT(hospital_endtime,'%Y-%m-%d') = #{hospital_endtime}
</update>
参考博文:http://www.cnblogs.com/-mrl/p/6021959.html
插一个:
关于mysql的update、delete、和insert into能否使用别名问题
在工作中遇到这样一个问题,就是mysql在insert into时能不能使用别名,大家会很奇怪为什么insert into使用别名呢?原因在于原来的项目中使用了user表,新项目要将user表拆分为user和userinfo表,在不修改原代码的前提下,将user extends userinfo,而持久层用的是mybatis,所以写sql段的时候,get时要获取user和userinfo,这样就使用到了left join,又因为user和userinfo中有些同样的字段如uid,updatetime,status,等,所以将要取别名以是区分,所以get取别名后那些字段都要在前面家别名,这样就导致update和delete还有insert into时也会使用这个sql段,这样才有了那个需求,但是查阅了资料发现mysql不可以使用,所有最后解决办法是get方法另外加一个sql段,使用了别名,而原来的几个操作使用原来没有加别名的sql段,这样问题才解决了,不知我是否叙述清楚?
最后结论:在mysql的update、delete、和insert into不能使用别名,即:insert into user as u(u.uid,u.name,u.email...) value(...)