先说原因:
两个xml配置文件中都添加了的SQL语句,供下方的具体语句include。当数据库调整之后,改了其中一个语句,但是并没有生效。因为ibatis中另一个文件的中获取了该id,而那个文件中的还没有改过来。
简单来说,就是程序中在两个文件中都定义了id=aaa的SQL,我改的是第二个,而程序会先执行并获取到第一个,后续就直接从内存中获取,不会执行到第二个了。
在我的印象中,我以为各个xml都是完全独立的,其实不是,ibatis解析后把所有sql都合并到一个HashMap中,当程序请求某个SQL语句时,实际上是从这个HashMap获取这个key的。所有当我全局搜索出错的代码看到两个相同的后,我就知道问题的所在了。
|