最近阅读其他同事刚提交的代码,发现直接将查询mysql工具中的SQL语句复制到mybatis的xml文件中,最后还带了分号。于是引发了一场技术讨论。

我们知道通常情况下我们在mybatis的xml文件中写的SQL语句是:

select * from tb_user

而在查询工具中为了区分不同的执行语句,往往会加上分号结尾,类似下面:

select * from tb_user;

针对mysql来说,在mybatis的xml文件中两种形式都是支持的。而对于Oracle,加分号的写法会报“ora-00911: 无效字符”的异常。

具体的原因是  “Oracle数据库接口对书写格式要求非常严格,有时候即使多加一个空格,多加一个逗号,分号,回车等都不行”。

因此,在使用的过程中需多加留意。为了验证这个问题当时专门写了一个单元测试,针对mysql是没问题的,但最后还是建议同事进行了修改。第一是因为统一编码风格,第二避免因为这里多出这么一个无意义的分号导致后续数据库迁移等其他情况下的异常。



mybatis的xml文件中SQL语句不能用分号结尾插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2020/09/17/mybatis-xml-sql/