本章概要
- 準備工作
- 功能實現
- 前后聯調
4.1 準備工作
- 數據庫腳本
CREATE TABLE schedule (id INT NOT NULL AUTO_INCREMENT,title VARCHAR(255) NOT NULL,completed BOOLEAN NOT NULL,PRIMARY KEY (id)
);INSERT INTO schedule (title, completed)
VALUES('學習java', true),('學習Python', false),('學習C++', true),('學習JavaScript', false),('學習HTML5', true),('學習CSS3', false),('學習Vue.js', true),('學習React', false),('學習Angular', true),('學習Node.js', false),('學習Express', true),('學習Koa', false),('學習MongoDB', true),('學習MySQL', false),('學習Redis', true),('學習Git', false),('學習Docker', true),('學習Kubernetes', false),('學習AWS', true),('學習Azure', false);
- 準備 pojo
包:com.atguigu.pojo
/*** projectName: com.atguigu.pojo** description: 任務實體類*/
@Data
public class Schedule {private Integer id;private String title;private Boolean completed;
}
- 準備 R
包: com.atguigu.utils
*** projectName: com.atguigu.utils** description: 返回結果類*/
public class R {private int code = 200; //200成功狀態碼private boolean flag = true; //返回狀態private Object data; //返回具體數據public static R ok(Object data){R r = new R();r.data = data;return r;}public static R fail(Object data){R r = new R();r.code = 500; //錯誤碼r.flag = false; //錯誤狀態r.data = data;return r;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public boolean isFlag() {return flag;}public void setFlag(boolean flag) {this.flag = flag;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}
}
- 準備 PageBean
包: com.atguigu.utils
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean<T> {private int currentPage; // 當前頁碼private int pageSize; // 每頁顯示的數據量private long total; // 總數據條數private List<T> data; // 當前頁的數據集合
}
4.2 功能實現
- 分頁查詢
- controller
/*@CrossOrigin 注釋在帶注釋的控制器方法上啟用跨源請求*/
@CrossOrigin
@RequestMapping("schedule")
@RestController
public class ScheduleController
{@Autowiredprivate ScheduleService scheduleService;@GetMapping("/{pageSize}/{currentPage}")public R showList(@PathVariable(name = "pageSize") int pageSize, @PathVariable(name = "currentPage") int currentPage){PageBean<Schedule> pageBean = scheduleService.findByPage(pageSize,currentPage);return R.ok(pageBean);}
}
- service
@Slf4j
@Service
public class ScheduleServiceImpl implements ScheduleService {@Autowiredprivate ScheduleMapper scheduleMapper;/*** 分頁數據查詢,返回分頁pageBean** @param pageSize* @param currentPage* @return*/@Overridepublic PageBean<Schedule> findByPage(int pageSize, int currentPage) {//1.設置分頁參數PageHelper.startPage(currentPage,pageSize);//2.數據庫查詢List<Schedule> list = scheduleMapper.queryPage();//3.結果獲取PageInfo<Schedule> pageInfo = new PageInfo<>(list);//4.pageBean封裝PageBean<Schedule> pageBean = new PageBean<>(pageInfo.getPageNum(),pageInfo.getPageSize(),pageInfo.getTotal(),pageInfo.getList());log.info("分頁查詢結果:{}",pageBean);return pageBean;}}
- mapper
mapper 接口
public interface ScheduleMapper {List<Schedule> queryPage();
}
mapper.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace等于mapper接口類的全限定名,這樣實現對應 -->
<mapper namespace="com.atguigu.mapper.ScheduleMapper"><select id="queryPage" resultType="schedule">select * from schedule</select>
</mapper>
- 計劃添加
- controller
@PostMapping
public R saveSchedule(@RequestBody Schedule schedule){scheduleService.saveSchedule(schedule);return R.ok(null);
}
- service
/*** 保存學習計劃** @param schedule*/
@Override
public void saveSchedule(Schedule schedule) {scheduleMapper.insert(schedule);
}
- mapper
mapper 接口
void insert(Schedule schedule);
mapper.xml 文件
<insert id="insert">insert into schedule (title, completed)values(#{title}, #{completed});
</insert>
- 計劃刪除
- controller
@DeleteMapping("/{id}")
public R removeSchedule(@PathVariable Integer id){scheduleService.removeById(id);return R.ok(null);
}
- service
/*** 移除學習計劃** @param id*/
@Override
public void removeById(Integer id) {scheduleMapper.delete(id);
}
- mapper
mapper 接口
void delete(Integer id);
mapper.xml 文件
<delete id="delete">delete from schedule where id = #{id}
</delete>
- 計劃修改
- controller
@PutMappingpublic R changeSchedule(@RequestBody Schedule schedule){scheduleService.updateSchedule(schedule);return R.ok(null);
}
- service
/*** 更新學習計劃** @param schedule*/
@Override
public void updateSchedule(Schedule schedule) {scheduleMapper.update(schedule);
}
- mapper
mapper 接口
void update(Schedule schedule);
mapper.xml 文件
<update id="update">update schedule set title = #{title} , completed = #{completed}where id = #{id}
</update>
4.3 前后聯調
- 后臺項目根路徑設計
- 啟動測試即可