目录
?namespaceidresultType指定映射文件的路径
mapper.xml
?是一个 MyBatis 的映射文件,用于定义 SQL 语句和结果映射。它是一个 XML 文件,通常放置在项目的资源目录下。
随着mybatis框架的发展,mybatis-plus工具的出现,一些基本的增删改查的sql语句不用在定义,
直接调用相关方法,但是一些复杂的sql语句例如涉及到多表查询的话仍然会使用到mapper文件去定义sql语句,或者使用注解的方式代替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>可以知道这是一个查询的sql语句, 而且是联表查询里的左连接操作
查询涉及到 cinema 和 schedule 两个表,交叉点是? s.cinema_id = c.id
条件是s.show_date >= DATE( CURRENT_DATE )
具体分析如下:
SELECT c.*
: 这意味着查询cinema
表中的所有列。FROM cinema c
: 这是查询的主表,名为cinema
,并为其分配了一个别名c
。LEFT JOIN schedule s ON s.cinema_id = c.id
: 这是一个左连接,意味着将cinema
表与schedule
表连接在一起。连接的条件是schedule
表的cinema_id
列与cinema
表的id
列相等。为schedule
表分配了一个别名s
WHERE s.show_date >= DATE( CURRENT_DATE )
: 这是一个过滤条件,只选择那些在schedule
表中其show_date
大于或等于当前日期的行。GROUP BY c.name
: 最后,结果按cinema
表的name
列进行分组。这个查询的结果将是一个列表,其中每一行都代表一个电影院的名称,这些电影院在给定的日期有安排。如果某个电影院没有在给定的日期有任何安排,那么它不会出现在结果中。
联表查询参考:
https://blog.csdn.net/m0_67930426/article/details/134321937
?
com.film.mapper.CinemaMapper
是指mapper包下的CinemaMapper
namespace
?属性定义了Mapper接口的全限定名
selectAllCinema 对应的是CinemaMapper里的一个方法
?resultType="com.film.entity.Cinema" 对应相应的实体类
查询语句返回的结果将被映射到?com.film.entity.Cinema
?这个 Java 类。
springboot框架 application文件里的配置路径
或者?
?
?