MyBatisPlus自定义SQL语句使用方法

结构

mapper包里有xml文件夹以及对应的接口,方法写在接口里,xml里写具体语句
MyBatisPlus自定义SQL语句使用方法_第1张图片

返回实体类

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;

/**
 * 

* 课程 Mapper 接口 *

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

在xml中编写自定义SQL


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">
    
    <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注入风险 如果只有一个参数,参数名可以随便写

你可能感兴趣的:(bug记录,Java,sql,mybatis,数据库)