|
|
@@ -13,6 +13,7 @@
|
|
|
<result column="cost" jdbcType="INTEGER" property="cost" />
|
|
|
<result column="teacher_id" jdbcType="INTEGER" property="teacherId" />
|
|
|
<result column="teacher_name" jdbcType="VARCHAR" property="teacherName" />
|
|
|
+ <result column="likes" jdbcType="INTEGER" property="likes" />
|
|
|
</resultMap>
|
|
|
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
|
|
delete from course
|
|
|
@@ -43,26 +44,32 @@
|
|
|
where id = #{id,jdbcType=INTEGER}
|
|
|
</update>
|
|
|
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
|
|
|
- select c.id, c.name, c.type, c.intro, c.picture, c.school, c.create_time, c.delete_time, c.cost, c.teacher_id, c.teacher_name, t.count as likes
|
|
|
+ select c.id, c.name, c.type, c.intro, c.picture, c.school, c.create_time, c.delete_time, c.cost, c.teacher_id, c.teacher_name, count(t.user_id) as likes
|
|
|
from course c
|
|
|
- inner join (select count(*) as count, course_id as id from course_likes group by course_id) as t
|
|
|
- on c.id = t.id
|
|
|
+ left join course_likes as t
|
|
|
+ on c.id = t.course_id
|
|
|
where c.id = #{id,jdbcType=INTEGER}
|
|
|
</select>
|
|
|
<select id="selectAll" resultMap="BaseResultMap">
|
|
|
- select c.id, c.name, c.type, c.intro, c.picture, c.school, c.create_time, c.delete_time, c.cost, c.teacher_id, c.teacher_name, t.count as likes
|
|
|
+ select c.id, c.name, c.type, c.intro, c.picture, c.school, c.create_time, c.delete_time, c.cost, c.teacher_id, c.teacher_name, count(t.user_id) as likes
|
|
|
from course c
|
|
|
- inner join (select count(*) as count, course_id as id from course_likes group by course_id) as t
|
|
|
- on c.id = t.id
|
|
|
+ left join course_likes as t
|
|
|
+ on c.id = t.course_id
|
|
|
+ group by c.id
|
|
|
</select>
|
|
|
<select id="selectByType" parameterType="java.lang.String" resultMap="BaseResultMap">
|
|
|
- select id, name, type, intro, picture, school, create_time, delete_time, cost, teacher_id, teacher_name
|
|
|
- from course
|
|
|
+ select c.id, c.name, c.type, c.intro, c.picture, c.school, c.create_time, c.delete_time, c.cost, c.teacher_id, c.teacher_name, count(t.user_id) as likes
|
|
|
+ from course c
|
|
|
+ left join course_likes as t
|
|
|
+ on c.id = t.course_id
|
|
|
where type = #{type,jdbcType=VARCHAR}
|
|
|
+ group by c.id
|
|
|
</select>
|
|
|
<select id="queryAll" parameterType="java.lang.String" resultMap="BaseResultMap">
|
|
|
- select id, name, type, intro, picture, school, create_time, delete_time, cost, teacher_id, teacher_name
|
|
|
- from course
|
|
|
+ select c.id, name, type, intro, picture, school, create_time, delete_time, cost, teacher_id, teacher_name, count(t.user_id) as likes
|
|
|
+ from course c
|
|
|
+ left join course_likes as t
|
|
|
+ on c.id = t.course_id
|
|
|
<where>
|
|
|
<if test="name!=null and name!=''">
|
|
|
or name like concat('%',#{key},'%')
|
|
|
@@ -74,25 +81,33 @@
|
|
|
or school like concat('%',#{key},'%')
|
|
|
</if>
|
|
|
</where>
|
|
|
+ group by c.id
|
|
|
order by create_time asc
|
|
|
</select>
|
|
|
<select id="selectByTeacherId" parameterType="java.lang.Integer" resultMap="BaseResultMap">
|
|
|
- select c.id, name, type, intro, picture, school, create_time, delete_time, cost, teacher_id, teacher_name
|
|
|
+ select c.id, name, type, intro, picture, school, create_time, delete_time, cost, teacher_id, teacher_name, count(t.user_id) as likes
|
|
|
from course c
|
|
|
+ left join course_likes t
|
|
|
+ on c.id = t.course_id
|
|
|
where teacher_id = #{userId}
|
|
|
+ group by c.id
|
|
|
</select>
|
|
|
<select id="selectByStudentId" parameterType="java.lang.Integer" resultMap="BaseResultMap">
|
|
|
- select c.id, name, type, intro, picture, school, create_time, delete_time, cost, teacher_id, teacher_name
|
|
|
+ select c.id, name, type, intro, picture, school, create_time, delete_time, cost, teacher_id, teacher_name, count(t.user_id) as likes
|
|
|
from course c
|
|
|
+ left join course_likes t
|
|
|
+ on c.id = t.course_id
|
|
|
where exists (
|
|
|
select o.id from course_order o where o.course_id = c.id and o.user_id = #{userId}
|
|
|
)
|
|
|
+ group by c.id
|
|
|
</select>
|
|
|
<select id="selectHotCourses" resultType="cn.seecoder.courselearning.po.Course">
|
|
|
- select c.id, c.name, c.type, c.intro, c.picture, c.school, c.create_time, c.delete_time, c.cost, c.teacher_id, c.teacher_name, t.count as likes
|
|
|
+ select c.id, c.name, c.type, c.intro, c.picture, c.school, c.create_time, c.delete_time, c.cost, c.teacher_id, c.teacher_name, count(t.user_id) as likes
|
|
|
from course c
|
|
|
- inner join (select count(*) as count, course_id as id from course_likes group by course_id) as t
|
|
|
- on c.id = t.id
|
|
|
+ left join course_likes t
|
|
|
+ on c.id = t.course_id
|
|
|
+ group by c.id
|
|
|
order by likes desc
|
|
|
</select>
|
|
|
</mapper>
|