问题描述
这里记录一个问题:
就是 mybatis 中,因为自己的粗心在select中使用了 update 语句,但是系统却并没有报错,并且执行成功。
数据库中的数据也修改完成了。
实验
然后我就对这个问题进行了一些实验,包括在 delete 标签中使用 update 语句,在 insert 标签中使用 update 语句 等等。
实验结果是,这些语句全都顺利执行,没有异常产生
结论
在 mybatis 中,标签的定义并不意味标签中的语句一定与标签对应。标签的作用在于,让 SqlSession 类去识别相应的数据库操作语句,做出相应的关联操作。
探究
我现在只知道,如果在 select 标签中写 update 语句,Mybatis中的缓存不会刷新。此时再次查询,将会查询到缓存中的数据。
原理需要后序的学习才能回答。暂时只有这种程度了。