【mybatis】mapper.xml映射文件

本文详细解读了MyBatis中mapper.xml文件的作用,重点介绍了如何在其中定义复杂SQL查询,如左连接查询,并展示了CinemaMapper接口中的`selectAllCinema`方法及其resultType的使用。同时提到了在SpringBoot框架中配置mapper.xml文件的路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.概述

二.了解mapper.xml文件

 namespaceidresultType指定映射文件的路径


一.概述

mapper.xml 是一个 MyBatis 的映射文件,用于定义 SQL 语句和结果映射。它是一个 XML 文件,通常放置在项目的资源目录下。

随着mybatis框架的发展,mybatis-plus工具的出现,一些基本的增删改查的sql语句不用在定义,

直接调用相关方法,但是一些复杂的sql语句例如涉及到多表查询的话仍然会使用到mapper文件去定义sql语句,或者使用注解的方式代替mapper.xml文件

二.了解mapper.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="com.film.mapper.CinemaMapper">
    <select id="selectAllCinema" resultType="com.film.entity.Cinema">
        SELECT
            c.*
        FROM
            cinema c
                LEFT JOIN schedule s ON s.cinema_id = c.id
        WHERE
            s.show_date >= DATE( CURRENT_DATE )
        GROUP BY c.name
    </select>
</mapper>

 <select>

通过<select>可以知道这是一个查询的sql语句, 而且是联表查询里的左连接操作

查询涉及到 cinema 和 schedule 两个表,交叉点是  s.cinema_id = c.id

条件是s.show_date >= DATE( CURRENT_DATE )

具体分析如下:

  1. SELECT c.*: 这意味着查询cinema表中的所有列。
  2. FROM cinema c: 这是查询的主表,名为cinema,并为其分配了一个别名c
  3. LEFT JOIN schedule s ON s.cinema_id = c.id: 这是一个左连接,意味着将cinema表与schedule表连接在一起。连接的条件是schedule表的cinema_id列与cinema表的id列相等。为schedule表分配了一个别名s
  4. WHERE s.show_date >= DATE( CURRENT_DATE ): 这是一个过滤条件,只选择那些在schedule表中其show_date大于或等于当前日期的行。
  5. GROUP BY c.name: 最后,结果按cinema表的name列进行分组。

这个查询的结果将是一个列表,其中每一行都代表一个电影院的名称,这些电影院在给定的日期有安排。如果某个电影院没有在给定的日期有任何安排,那么它不会出现在结果中。

联表查询参考:

https://blog.youkuaiyun.com/m0_67930426/article/details/134321937

namespace

 

com.film.mapper.CinemaMapper

是指mapper包下的CinemaMapper

namespace 属性定义了Mapper接口的全限定名

id

selectAllCinema 对应的是CinemaMapper里的一个方法

resultType

 resultType="com.film.entity.Cinema" 对应相应的实体类

查询语句返回的结果将被映射到 com.film.entity.Cinema 这个 Java 类。

指定映射文件的路径

springboot框架 application文件里的配置路径

或者 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值