1. 程式人生 > 實用技巧 >學成線上3-課程管理

學成線上3-課程管理

  • 資料庫:

因為課程資訊包括了基本資訊、課程計劃、教師資訊等內容,為了方便以後業務擴充套件我們表結構設計如下:

  • 程式碼:

1.查詢:

點選我的課程,分頁展示出已新增課程列表,目前展示資訊僅包括基本資訊和圖片資訊,可能後面還會有學習人數等資訊。選用技術Mybatias+PageHelper分頁//在呼叫dao的service方法中設定分頁引數:PageHelper.startPage(page, size),分頁引數會設定在ThreadLocal中PageHelper在mybatis執行sql前進行攔截,從ThreadLocal取出分頁引數,修改當前執行的sql語句,新增分頁 sql。最後執行添加了分頁sql的sql語句,實現分頁查詢

///////////pom檔案:
<dependency> 
  <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper‐spring‐boot‐starter</artifactId>
   <version>1.2.4</version> 
</dependency>

///////////配置檔案:
pagehelper: 
  helper‐dialect: mysql

///////////DAO層:
@Mapper 
public interface CourseMapper {
 Page
<CourseInfo> findCourseListPage(CourseListRequest courseListRequest); } ///////////DAO層對應對映檔案: <select id="findCourseListPage" resultType="com.xuecheng.framework.domain.course.ext.CourseInfo" parameterType="com.xuecheng.framework.domain.course.request.CourseListRequest"> SELECT course_base.*, (SELECT pic FROM course_pic WHERE courseid
= course_base.id) pic FROM course_base </select> /////////////測試分頁: @Test
public void testPageHelper(){
PageHelper.startPage(1, 10);//查詢第一頁,每頁顯示10條記錄
CourseListRequest courseListRequest = new CourseListRequest();
Page<CourseInfo> courseListPage = courseMapper.findCourseListPage(courseListRequest);
List<CourseInfo> result = courseListPage.getResult();
System.out.println(courseListPage); }

2.新增課程:

點選+號進入新增課程頁面

3.課程分類查詢:

分類資訊查詢應用到首頁導航選單、新增課程時選擇分類等,它的資料結構如下圖:

//定義前後端互動VO繼承分類資訊類
@Data @ToString public class CategoryNode extends Category { List<CategoryNode> children; }

//對映檔案:參考課程計劃:根據課程id查詢出該課程的學習計劃目錄  去掉條件即可
<resultMap type="com.xuecheng.framework.domain.course.ext.TeachplanNode" id="teachplanMap" > 
  <id property="id" column="one_id"/>
  <result property="pname" column="one_name"/>
  <collection property="children"ofType="com.xuecheng.framework.domain.course.ext.TeachplanNode">
    <id property="id" column="two_id"/>
    <result property="pname" column="two_name"/>
    <collection property="children" ofType="com.xuecheng.framework.domain.course.ext.TeachplanNode">
      <id property="id" column="three_id"/>
      <result property="pname" column="three_name"/>
     </collection>
  </collection>
</resultMap>

<select id="selectList" resultMap="teachplanMap" parameterType="java.lang.String" >
SELECT a.id one_id, a.pname one_name,
  b.id two_id, b.pname two_name,
  c.id three_id, c.pname three_name
FROM teachplan
a LEFT JOIN teachplan b ON a.id = b.parentid
LEFT JOIN teachplan c ON b.id = c.parentid
WHERE a.parentid = '0'
<if test="_parameter!=null and _parameter!=''">
  and a.courseid=#{courseId}
</if>
ORDER BY a.orderby, b.orderby, c.orderby
</select>