SQL映射文件
XxxxMapper.xml
:专门用来编写SQL语句的映射文件(一个表对应一个),如t_user
表一般会对应一个UserMapper.xml
mapper的namespace属性
如果两个SQL映射文件中的sqlid重名
,Mybatis无法确定执行哪个SQL语句会提示sqlid在集合中不明确
(请尝试使⽤包含名称空间的全名或重命名其中⼀个条⽬)
在mybatis-config.xml
核心配置文件中引入CarMapper.xml
和CarMapper2.xml
<!--引入sql映射文件-->
<mappers>
<mapper resource="CarMapper.xml"/>
<mapper resource="CarMapper2.xml"/>
</mappers>
CarMapper.xml
和CarMapper2.xml
两个SQL映射文件中都有 id="selectCarAll"
的SQL语句,但是它们的namespace
前缀不相同MyBatis可以区分
<!--CarMapper.xml-->
<mapper namespace="car">
<select id="selectCarAll" resultType="com.powernode.mybatis.pojo.Car">
select
id, car_num as carNum, brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType
from
t_car
</select>
</mapper>
<!--CarMapper2.xml-->
<mapper namespace="car2">
<!--sqlid重名了-->
<select id="selectCarAll" resultType="com.powernode.mybatis.pojo.Car">
select
id, car_num as carNum, brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType
from
t_car
</select>
</mapper>
执行SQL语句使用SQL映射文件中的命名空间作为sqlid的前缀
@Test
public void testNamespace(){
// 获取SqlSession对象
SqlSession sqlSession = SqlSessionUtil.openSession();
// 执⾏SQL语句时的完整写法namespace.id
List<Object> cars = sqlSession.selectList("car.selectCarAll");
List<Object> cars = sqlSession.selectList("car2.selectCarAll");
// 输出结果
cars.forEach(car -> System.out.println(car));
}
原文地址:https://blog.csdn.net/qq_57005976/article/details/134763214
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_36418.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。