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

news/2024/5/18 21:49:14 标签: mybatis, sql, java, JDBC

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的前缀

java">@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));
}

http://www.niftyadmin.cn/n/5235870.html

相关文章

C#网络编程System.Net.WebClient 类vs System.Net.Http.HttpClient 类

目录 一、WebClient 类 1.WebClient 将数据上传到资源的方法 2.WebClient 从资源下载数据的方法 3.示例源码 4.生成效果 二、HttpClient 类 1.示例源码 2.生成效果 为什么要把两者拿出来pk呢&#xff1f;那是因为WebClient已经在.NET 6.0以后得版本被弃用了&#xff0c…

Nginx的缓存配置与其他配置

一、Nginx的缓存配置 http {server {#设置缓存的通配符&#xff0c;只要满足后缀是jpg或png或swf或gif的就进行缓存&#xff08;意思就>是当用户浏览网页时&#xff0c;会将网页上所有jpg或png或swf或gif都缓存起来&#xff0c;下次用户再次访问的时候就直接从本地加载图片…

Nacos源码解读04——服务发现

Nacos服务发现的方式 1.客户端获取 1.1:先是故障转移机制判断是否去本地文件中读取信息&#xff0c;读到则返回 1.2:再去本地服务列表读取信息(本地缓存)&#xff0c;没读到则创建一个空的服务&#xff0c;然后立刻去nacos中读取更新 1.3:读到了就返回&#xff0c;同时开启定时…

〖大前端 - 基础入门三大核心之JS篇㊻〗- JS + CSS实现动画

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

计算机网络——习题

目录 一、填空题 二、选择题 一、填空题 1、在TCP/IP层次模型的网络层中包括的协议主要有 ARP、RARP、ICMP、IGMP 。 2、传输层的传输服务有两大类&#xff1a; 面向连接&#xff08;TCP&#xff09;和 无连接服务&#xff08;UDP&#xff09;。 3、Internet所提供的三项…

Python程序员入门指南:学习时间和方法

文章目录 标题Python程序员入门指南&#xff1a;学习时间、方法和就业前景学习方法建议学习时间 标题 Python程序员入门指南&#xff1a;学习时间、方法和就业前景 Python是一种流行的编程语言&#xff0c;它具有简洁、易读和灵活的特点。Python可以用于多种领域&#xff0c;如…

Spring中MultipartFile和File转换

前言&#xff1a;在SpringBoot项目中经常用到的就是MultipartFile和File转换的问题&#xff0c;一开始我也并不是非常了解&#xff0c;参考了一些资料和ChatGPT的帮助后完成的业务开发&#xff0c;现在有时间就自己总结一下并记录一下简单的用法&#xff0c;可能不是很全 正文&…

Google Guava 缓存工具使用详解

文章目录 缓存工具Cache接口LoadingCache接口CacheBuilder类CacheLoader类CacheStats类RemovalListener类 缓存工具 Guava提供了Cache接口和相关的类来支持缓存功能&#xff0c;它提供了高性能、线程安全的内存缓存&#xff0c;可以用于优化应用程序的性能。 特点&#xff1a…