mybatis中的两个sql文件的select语句可以互相调用吗

在A.xml定义了一个select语句,id为selectUser。在B.xml定义了另一个select语句,现在想问一下在B.xml中如何调用A.xml定义的id为se... 在A.xml定义了一个select语句,id为selectUser。在B.xml定义了另一个select语句,现在想问一下在B.xml中如何调用A.xml定义的id为selectUser语句?能调用到吗 展开
 我来答
默默么么Mo
2014-04-21 · TA获得超过449个赞
知道小有建树答主
回答量:96
采纳率:100%
帮助的人:53万
展开全部
不得不说,不怕你不敢做,只怕你不敢想...看到你的提问后,我测试了一下,答案是:可以的...
以下是案例:
我有两mybatis文件,分别是ClassMapper.xml和BabyMapper.xml中,现在想要用ClassMapper调用BabyMapper中的一个方法。
ClassMapper.xml中的查询语句:
<select id="getByBo" resultMap="BaseResultMap" parameterType="ClassesBo">
select * from class c where 1 = 1
<include refid="baby.getdemo"/>
</select>
BabyMapper.xml中的查询语句:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="baby">
<sql id="getdemo">
and 2 = 2
</sql>
</mapper>
通过log观察发现最后的结果:
Preparing: select * from class c where 1 = 1 and 2 = 2
通过以上,发现是可以跨文件调用的,写的时候需要把指针也写上,如:baby.getdemo
以上只是例子,实际还需要按照你自己来定
追问
非常感谢了,我测试的时候只是把两个不同的SQL映射文件设置具有相同的namespace就可以互相调用了。这样就可以在ResultMap中association和collection的select属性直接调用了。
你这种又是一个补充说明,这种情况我没考虑到,不过也是可以的!
哈哈,重在实践啦
百度网友784eb94
2014-04-20 · TA获得超过377个赞
知道小有建树答主
回答量:205
采纳率:100%
帮助的人:165万
展开全部
不行的……
更多追问追答
追问
今天最后我测试后发现是可以的,今天我做了测试,只要两个SQL映射文件的namespace具有相同的名称就可以了
追答
什么意思?你的意思是说你在A的实现类里面去调用b文件的方法?好吧,还以为你说要在A文件里面用B的东西了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式