02-MyBatis的SQL映射文件的配置

SQL映射文件

XxxxMapper.xml:专门用来编写SQL语句的映射文件(一个表对应一个),如t_user表一般会对应一个UserMapper.xml

mapper的namespace属性

如果两个SQL映射文件中的sqlid重名,Mybatis无法确定执行哪个SQL语句会提示sqlid在集合中不明确(请尝试使⽤包含名称空间的全名或重命名其中⼀个条⽬)

  • sqlid的完整写法namespace.id: 使用命名空间namespace作为sqlid前缀可以防⽌不同SQL映射文件的sqlid冲突问题

mybatis-config.xml核心配置文件中引入CarMapper.xmlCarMapper2.xml

<!--引入sql映射文件-->
<mappers>
    <mapper resource="CarMapper.xml"/>
    <mapper resource="CarMapper2.xml"/>
</mappers>

CarMapper.xmlCarMapper2.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));
}

相关推荐

  1. 02-MyBatisSQL映射文件配置

    2023-12-07 11:12:03       38 阅读
  2. MyBatis配置文件映射文件

    2023-12-07 11:12:03       28 阅读
  3. MyBatis核心配置文件

    2023-12-07 11:12:03       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 11:12:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 11:12:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 11:12:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 11:12:03       18 阅读

热门阅读

  1. mybatis缓存导致REQUIRES_NEW数据读不到

    2023-12-07 11:12:03       34 阅读
  2. Linux设置Docker自动创建Nginx容器脚本

    2023-12-07 11:12:03       37 阅读
  3. Android studio新版本aar包导入项目中配置

    2023-12-07 11:12:03       35 阅读
  4. CSS中超链接的4种伪类

    2023-12-07 11:12:03       36 阅读
  5. 自然语言处理(NLP)技术应用示例

    2023-12-07 11:12:03       35 阅读
  6. Vue 已发布 v3.3.10 版本

    2023-12-07 11:12:03       38 阅读
  7. 2023 iOS 八股文

    2023-12-07 11:12:03       36 阅读
  8. 【Python-第三方库-OpenCV】随笔

    2023-12-07 11:12:03       43 阅读