MyBatisPlus自定义SQL语句使用方法

结构

mapper包里有xml文件夹以及对应的接口,方法写在接口里,xml里写具体语句
在这里插入图片描述

返回实体类

package com.ym.edu.entity.vo;

import java.io.Serializable;

/**
 * @author ym
 * @date 2022/10/05 08:27:54
 * @description
 **/
public class CoursePublishVo implements Serializable {
    private static final long serialVersionUID = 1L;

    private String id;
    private String title;
    private String cover;
    private Integer lessonNum;
    private String subjectLevelOne;
    private String subjectLevelTwo;
    private String teacherName;
    /**
     * 只用于显示
     */
    private String price;
}

自定义SQL接口方法

package com.ym.edu.mapper;

import com.ym.edu.entity.Course;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ym.edu.entity.vo.CoursePublishVo;

/**
 * <p>
 * 课程 Mapper 接口
 * </p>
 *
 * @author ym
 * @since 2022-06-27
 */
public interface CourseMapper extends BaseMapper<Course> {
    /**
     * 自定义SQL获取发布信息
     *
     * @param courseId
     * @return
     */
    public CoursePublishVo getPublishCourseInfoVo(String courseId);
}


在xml中编写自定义SQL

<?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.ym.edu.mapper.CourseMapper">
    <!--根据课程id查询课程确认信息-->
    <select id="getPublishCourseInfoVo" resultType="com.ym.edu.entity.vo.CoursePublishVo">
        SELECT ec.`id`,
               ec.`title`,
               ec.`cover`,
               ec.`price`,
               ec.`lesson_num` AS lessonNum,
               et.`name`       AS teacherName,
               es.`title`      AS subjectLevelOne,
               es1.`title`     AS subjectLevelTwo
        FROM edu_course ec
                 LEFT JOIN edu_course_description ecd ON ec.`id` = ecd.`id`
                 LEFT JOIN edu_teacher et ON ec.`teacher_id` = et.`id`
                 LEFT JOIN edu_subject es ON ec.`subject_id` = es.`id`
                 LEFT JOIN edu_subject es1 ON es.`parent_id` = es1.`id`
        WHERE ec.`id` = #{courseId}
    </select>
</mapper>

1.id=“getPublishCourseInfoVo” 表示对应的自定义SQL方法
2.parameterType=“String” 表示参数类型,一般可以不写
3.resultType=“com.ym.edu.entity.vo.CoursePublishVo” 表示返回数据类型,这个必须要写,需要返回数据类型的全路径
4.resultMap=“” 表示自定义返回数据类型,需要专门自定义
5.自定义SQL语句里获取的字段名或者字段别名要与返回数据类型里的属性名要对应
6.WHERE ec.id = #{courseId} 表示参数,可以使用#也可以使用美元符,但是一般不使用美元符,因为它表示字符串拼接,有SQL注入风险 如果只有一个参数,参数名可以随便写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值