MyBatis映射文件深入_动态sql之片段的抽取
比如如果我们在一个映射文件中加入有很多个select标签, 每个select标签都是以select * from user开头的, 并且他们如果都是同步变化的, 也就是可能某个时候要同时变为select id from user, 这个时候由于我们有多个select标签, 其中都要将 * 变为 id, 所以改变起来就会很麻烦, 也就是维护起来很困难, 所以我们就提出了sql片段的抽取, 利用sql片段的抽取, 我们就可以将这些相同的sql片段抽取出来放到一处一起维护, 要使用此sql片段的时候我们直接对这个sql片段进行引入即可
- 这种维护其实在Java中是很常见的, 在Java中存在很多的抽取, 就是将多个相同的抽取出来放到一处, 只要我们维护这一处, 其他地方使用的时候只要是引用我们维护的这一处即可, 然后只要我们修改了维护的这一处的内容之后, 其余的引用的部分全部会一同改变
举例说明:
假如某个映射文件中有多个select标签, 并且每个标签中都有内容 select * from user , 那么我们就可以将这条sql语句提取出来(如下:)
<sql id = "selectUser">select * from user</sql>
- sql标签就用来进行sql语句片段的抽取维护
- sql标签中的id属性值就是该sql语句片段的唯一标识
- 这个sql标签是写在映射文件中的
那么如何引用此sql片段?(如下:)
<include refid = "selectUser"></include>
- ref表示引用, refid就是表示引用的sql的id值
- 这里我们引用sql片段的标签是include标签
- c语言中导入包时也是用的include