ibatis修改xml中的SQL语句后不生效:一个极隐蔽的bug

任天堂74

先说原因:

两个xml配置文件中都添加了的SQL语句,供下方的具体语句include。当数据库调整之后,改了其中一个语句,但是并没有生效。因为ibatis中另一个文件的中获取了该id,而那个文件中的还没有改过来。


简单来说,就是程序中在两个文件中都定义了id=aaa的SQL,我改的是第二个,而程序会先执行并获取到第一个,后续就直接从内存中获取,不会执行到第二个了。


在我的印象中,我以为各个xml都是完全独立的,其实不是,ibatis解析后把所有sql都合并到一个HashMap中,当程序请求某个SQL语句时,实际上是从这个HashMap获取这个key的。所有当我全局搜索出错的代码看到两个相同的后,我就知道问题的所在了。

主 楼 发布于:2018-08-17 16:13:43 编辑于:2018-08-17 16:41:51回复
任天堂74

参考:

com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate

所有的SQL语句就储存在private HashMap mappedStatements中。

2 楼 发布于:2018-08-17 16:16:28
回复
风中沙飘

千好万好事事好,月圆情圆人团圆,祝:中秋节快乐,万事如意,心想事成!

3 楼 发布于:2018-10-13 22:03:26
回复
本色设计

不要迷恋哥,哥只是个传说

4 楼 发布于:2018-11-02 01:57:01
回复
粉红的猪

娶老婆应是小昭,交朋友应是令狐冲,做男儿最好是乔峰,出来混还是韦小宝。

5 楼 发布于:2018-11-05 11:45:46
回复
天使光芒97

你的短信我已收到,你是谁?我的手机上没你的记录。我猜你一定是盛金斌,或者是艾柏武,要不就是秦寿了。若都不是,那我断定你是边泰。”

6 楼 发布于:2018-11-10 11:45:16
回复
白马小生

我的爱人都叫我第三者!

7 楼 发布于:2018-11-28 10:16:07
回复
莫妮海兹

人不猥琐枉少年!

8 楼 发布于:2018-12-25 17:28:24
回复
大唐迷你PC

天使之所以会飞,是因为她们把自己看得很轻……

9 楼 发布于:2019-09-08 01:22:00
回复
含玉外送茶22

爱空空情空空,自己流浪在街中;人空空钱空空,单身苦命在打工;事空空业空空,想来想去就发疯;手机空没钱充,生活所迫不轻松。总之四大皆空。

10 楼 发布于:2023-12-18 11:53:41
回复
诱惑ni

不明觉厉

11 楼 发布于:2024-02-16 01:50:21
回复

发表回复: