mybatis 使用遇到check/use关键字报错

   如题,在mybatis的xml配置一个表的sql语句,发现我的字段名为check和use的时候,就会报错,后来查了下,原来是因为mysql的关键字冲突了,可以给表名取一个别名,然后引用就可以了:

 
	
		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}
	

参考博文:http://www.cnblogs.com/-mrl/p/6021959.html


插一个:

关于mysql的update、delete、和insert into能否使用别名问题

分类:MySQL

 (2019)  (0)

在工作中遇到这样一个问题,就是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(...)


你可能感兴趣的:(Java原理和技术)