学成在线--17.我的课程
文章目錄
- 一.需求分析
- 二.API接口
- 三.PageHelper
- 1.PageHelper介紹
- 2.添加依賴
- 3.配置pageHelper
- 四.Dao
- 1.mapper 接口
- 2.mapper.xml映射文件
- 3.測(cè)試Dao
- 五.Service
- 六.Controller
- 七.前端
- 1.創(chuàng)建course_list.vue
- 2.路由
- 3.定義API方法
- 4.前端視圖course_list.vue詳解
- 1)API調(diào)用--在視圖中調(diào)用findCourseList方法
- 2)在mounted鉤子中調(diào)用getCourse方法
- 3)在分頁(yè)方法中調(diào)用getCourse方法
- 八.測(cè)試結(jié)果
一.需求分析
課程添加完成后可通過我的課程進(jìn)入課程修改頁(yè)面,此頁(yè)面顯示我的課程列表,如下圖所示,可分頁(yè)查詢。
上邊的查詢要實(shí)現(xiàn)分頁(yè)、會(huì)存在多表關(guān)聯(lián)查詢,所以建議使用mybatis實(shí)現(xiàn)我的課程查詢。
二.API接口
在api工程創(chuàng)建course包,創(chuàng)建CourseControllerApi接口。
文件位置:xcEduService01\xc-service-api\src\main\java\com\xuecheng\api\course\CourseControllerApi.java
輸入?yún)?shù):頁(yè)碼、每頁(yè)顯示個(gè)數(shù)、查詢條件
輸出結(jié)果類型:QueryResponseResult<自定義類型>
三.PageHelper
1.PageHelper介紹
PageHelper是mybatis的通用分頁(yè)插件,通過mybatis的攔截器實(shí)現(xiàn)分頁(yè)功能,攔截sql查詢請(qǐng)求,添加分頁(yè)語(yǔ)句,最終實(shí)現(xiàn)分頁(yè)查詢功能。
我的課程具有分頁(yè)功能,本項(xiàng)目使用Pagehelper實(shí)現(xiàn)Mybatis分頁(yè)功能開發(fā),由于本項(xiàng)目使用springboot開發(fā),在springboot上集成pagehelper(https://github.com/pagehelper/pagehelper-spring-boot)
PageHelper的使用方法及原理如下:
在調(diào)用dao的service方法中設(shè)置分頁(yè)參數(shù):PageHelper.startPage(page, size),分頁(yè)參數(shù)會(huì)設(shè)置在ThreadLocal中PageHelper在mybatis執(zhí)行sql前進(jìn)行攔截,從ThreadLocal取出分頁(yè)參數(shù),修改當(dāng)前執(zhí)行的sql語(yǔ)句,添加分頁(yè)sql。
最后執(zhí)行添加了分頁(yè)sql的sql語(yǔ)句,實(shí)現(xiàn)分頁(yè)查詢。
2.添加依賴
文件位置:xcEduService01\xc-service-manage-course\pom.xml
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper‐spring‐boot‐starter</artifactId><version>1.2.4</version> </dependency>3.配置pageHelper
在application.yml中配置pageHelper操作的數(shù)據(jù)庫(kù)類型:
文件位置:xcEduService01\xc-service-manage-course\src\main\resources\application.yml
四.Dao
1.mapper 接口
文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\dao\CourseMapper.java
import com.github.pagehelper.Page; import com.xuecheng.framework.domain.course.CourseBase; import com.xuecheng.framework.domain.course.ext.CourseInfo; import com.xuecheng.framework.domain.course.request.CourseListRequest; import org.apache.ibatis.annotations.Mapper; @Mapper public interface CourseMapper {CourseBase findCourseBaseById(String id); Page<CourseInfo> findCourseListPage(CourseListRequest courseListRequest); }2.mapper.xml映射文件
文件位置:xcEduService01\xc-service-manage-course\src\main\resources\com\xuecheng\manage_course\dao\CourseMapper.xml
<select id="findCourseListPage" resultType="com.xuecheng.framework.domain.course.ext.CourseInfo" parameterType="com.xuecheng.framework.domain.course.request.CourseListRequest">SELECTcourse_base.*,(SELECT pic FROM course_pic WHERE courseid = course_base.id) picFROMcourse_base </select>3.測(cè)試Dao
文件位置:xcEduService01\xc-service-manage-course\src\test\java\com\xuecheng\manage_course\dao\TestDao.java
//測(cè)試分頁(yè) @Test public void testPageHelper(){PageHelper.startPage(2, 1);CourseListRequest courseListRequest = new CourseListRequest();Page<CourseInfo> courseListPage = courseMapper.findCourseListPage(courseListRequest);List<CourseInfo> result = courseListPage.getResult();System.out.println(courseListPage); }五.Service
定義CourseService.java類,用于課程管理的service定義:
文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\service\CourseService.java
//課程列表分頁(yè)查詢 public QueryResponseResult<CourseInfo> findCourseList(int page,int size,CourseListRequest courseListRequest) {if(courseListRequest == null){courseListRequest = new CourseListRequest();}if(page<=0){page = 0;} if(size<=0){size = 20;} //設(shè)置分頁(yè)參數(shù)PageHelper.startPage(page, size);//分頁(yè)查詢Page<CourseInfo> courseListPage = courseMapper.findCourseListPage(courseListRequest);//查詢列表List<CourseInfo> list = courseListPage.getResult();//總記錄數(shù)long total = courseListPage.getTotal();//查詢結(jié)果集QueryResult<CourseInfo> courseIncfoQueryResult = new QueryResult<CourseInfo>();courseIncfoQueryResult.setList(list);courseIncfoQueryResult.setTotal(total);return new QueryResponseResult<CourseInfo>(CommonCode.SUCCESS, courseIncfoQueryResult); }六.Controller
文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\controller\CourseController.java
@RestController @RequestMapping("/course") public class CourseController implements CourseControllerApi {@AutowiredCourseService courseService;@Override@GetMapping("/coursebase/list/{page}/{size}")public QueryResponseResult<CourseInfo> findCourseList(@PathVariable("page") int page, @PathVariable("size") int size,CourseListRequest courseListRequest) {return courseService.findCourseList(page,size,courseListRequest);} }七.前端
1.創(chuàng)建course_list.vue
使用element 的card組件,頁(yè)面布局代碼如下:
文件位置:xc-ui-pc-teach\src\module\course\page\course_list.vue
2.路由
文件位置:xc-ui-pc-teach\src\module\course\router\index.js
import course_list from '@/module/course/page/course_list.vue'; import Home from '@/module/home/page/home.vue'; export default [{path: '/course',component: Home,name: '課程管理',hidden: false,iconCls: 'el-icon-document',children: [{ path: '/course/list', name: '我的課程',component: course_list,hidden: false },}3.定義API方法
文件位置:xc-ui-pc-teach\src\module\course\api\course.js
//我的課程列表 export const findCourseList = (page,size,params) => {//對(duì)于查詢條件,向服務(wù)端傳入key/value串。//使用工具類將json對(duì)象轉(zhuǎn)成key/valuelet queries = querystring.stringify(params)return http.requestQuickGet(apiUrl+"/course/coursebase/list/"+page+"/"+size+"?"+queries); }4.前端視圖course_list.vue詳解
文件位置:xc-ui-pc-teach\src\module\course\page\course_list.vue
1)API調(diào)用–在視圖中調(diào)用findCourseList方法
//獲取課程列表 getCourse() {courseApi.findCourseList(this.page,this.size,{}).then((res) => {console.log(res);if(res.success){this.total = res.queryResult.total;this.courses = res.queryResult.list;}}); },2)在mounted鉤子中調(diào)用getCourse方法
mounted() {//查詢我的課程this.getCourse(); }3)在分頁(yè)方法中調(diào)用getCourse方法
//分頁(yè)方法 handleCurrentChange(val) {this.page = val;this.getCourse(); }八.測(cè)試結(jié)果
頁(yè)面效果如下:
注意:由于課程圖片服務(wù)器沒有搭建,這里圖片暫時(shí)無(wú)法顯示。
總結(jié)
以上是生活随笔為你收集整理的学成在线--17.我的课程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue axios的封装大全
- 下一篇: 怎样计算阶乘