本示例基于SpringBoot,引入依赖mybatis-plus
1.引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
2.实体类
Course
@Data
public class Course implements Serializable {
/**
* 课程ID
*/
@ApiModelProperty("课程ID")
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**
* 课程讲师ID
*/
@ApiModelProperty("课程讲师ID")
private String teacherId;
/**
* 课程专业ID
*/
@ApiModelProperty("课程专业ID")
private String subjectId;
/**
* 课程专业父级ID
*/
@ApiModelProperty("课程专业父级ID")
private String subjectParentId;
/**
* 课程标题
*/
@ApiModelProperty("课程标题")
private String tit;
/**
* 课程销售价格,设置为0则可免费观看
*/
@ApiModelProperty("课程销售价格,设置为0则可免费观看")
private BigDecimal price;
/**
* 总课时
*/
@ApiModelProperty("总课时")
private Integer lessonNum;
/**
* 课程封面图片路径
*/
@ApiModelProperty("课程封面图片路径")
private String cover;
/**
* 销售数量
*/
@ApiModelProperty("销售数量")
private Long buyCount;
/**
* 浏览数量
*/
@ApiModelProperty("浏览数量")
private Long viewCount;
/**
* 乐观锁
*/
@ApiModelProperty("乐观锁")
private Long version;
/**
* 课程状态 Draft未发布 Normal已发布
*/
@ApiModelProperty("课程状态 Draft未发布 Normal已发布")
private String status;
/**
* 逻辑删除 1(true)已删除, 0(false)未删除
*/
@ApiModelProperty("逻辑删除 1(true)已删除, 0(false)未删除")
private Integer isDeleted;
/**
* 创建时间
*/
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime gmtCreate;
/**
* 更新时间
*/
@ApiModelProperty("更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime gmtModified;
/**
* 课程备注
*/
@ApiModelProperty("课程备注")
private String remark;
/**
* 是否添加 0 否 1 是
*/
@ApiModelProperty("是否添加 0 否 1 是")
private Integer isAdd;
@TableField(exist = false)
private Subject subject;
}
Subject
/**
* 课程科目
* @TableName edu_subject
*/
@Data
public class Subject {
/**
* 课程类别ID
*/
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**
* 类别名称
*/
@TableField(value = "title")
private String title;
/**
* 父ID
*/
private String parentId;
/**
* 课程分类的状态 1 正常 0 禁用
*/
private String statusId;
/**
* 备注
*/
private String remark;
/**
* 排序字段
*/
private int sort;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime gmtCreate;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime gmtModified;
}
3.Mapper
public interface CourseMapper extends BaseMapper<Course>{
Page<Course> selectByCoursePage(Page<Course> page, @Param("ew") QueryWrapper<Course> wrapper);
}
4.CourseMapper.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.four.firstPage.mapper.CourseMapper">
<resultMap id="CourseBaseResultMap" type="com.four.pojo.Course" autoMapping="true">
<id property="id" column="id"/>
<association property="subject" javaType="com.four.pojo.Subject" autoMapping="true">
<id property="id" column="id"></id>
</association>
</resultMap>
<select id="selectByCoursePage" resultMap="CourseBaseResultMap">
select ec.*,es.title from edu_course ec join edu_subject es on ec.subject_id = es.id
<where>
<if test="ew!=null and ew.sqlSegment!= ''">
and ${ew.sqlSegment}
</if>
</where>
</select>
</mapper>