关于Spring Boot的东西实在是太多太多了,毕竟是现在的主流框架,这里就不一一列举了,大家可以到到我的博客慢慢查找。
五、Java程序员简历上的第二个项目
第一个项目应该是SSM整合,第二个应该就是Spring Boot + Vue了。
1、项目结构
2、EduTeacherController
package com.guor.eduservice.controller;
import com.guor.commonutils.R;
import com.guor.eduservice.entity.EduTeacher;
import com.guor.eduservice.entity.vo.TeacherQuery;
import com.guor.eduservice.service.EduTeacherService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(description=“讲师管理”)
@RestController
@RequestMapping(“/eduservice/teacher”)
@CrossOrigin
public class EduTeacherController {
@Autowired
private EduTeacherService teacherService;
@ApiOperation(value = “所有讲师列表”)
@GetMapping(“findAll”)
public R findAllTeacher(){
List list = teacherService.list(null);
return R.Ok().data(“items”,list);
}
@ApiOperation(value = “根据ID查询讲师”)
@GetMapping(“findById{id}”)
public R findById(@ApiParam(name=“id”,value=“讲师ID”,required=true) @PathVariable String id){
EduTeacher teacher = teacherService.getById(id);
return R.Ok().data(“items”,teacher.getJson());
}
@ApiOperation(value = “根据ID删除讲师”)
//逻辑删除讲师的方法
@DeleteMapping(“{id}”)
public R removeTeacher(@ApiParam(name=“id”,value=“讲师ID”,required=true) @PathVariable String id){
Boolean flag = teacherService.removeById(id);
if(flag){
return R.Ok();
}else{
return R.error();
}
}
//分页
@GetMapping(“pageTeacher/{current}/{limit}”)
public R pageListTeacher(@PathVariable long current,@PathVariable long limit){
//创建page对象
Page pageTeacher = new Page<>(current,limit);
//调用方法的时候,底层封装,把分页所有数据封装到pageTeacher中
teacherService.page(pageTeacher,null);
long total = pageTeacher.getTotal();
List records = pageTeacher.getRecords();
//Map map = new HashMap();
//map.put(“total”,total);
//map.put(“rows”,records);
return R.Ok().data(“total”,total).data(“rows”,records);
}
@PostMapping(“pageTeacherCondition/{current}/{limit}”)
public R pageTeacherCondition(@PathVariable long current,@PathVariable long limit,
@RequestBody(required = false) TeacherQuery teacherQuery){
//创建一个page对象
Page pageTeacher = new Page<>(current,limit);
QueryWrapper wrapper = new QueryWrapper<>();
//多条件组合查询
//动态SQL
//判断条件值是否为空,不为空就拼接
String name = teacherQuery.getName();
Integer level = teacherQuery.getLevel();
String begin = teacherQuery.getBegin();
String end = teacherQuery.getEnd();
if(!StringUtils.isEmpty(name)){
wrapper.like(“name”,name);
}
if(!StringUtils.isEmpty(level)){
wrapper.eq(“level”,level);
}
if(!StringUtils.isEmpty(begin)){
wrapper.ge(“gmt_create”,begin);
}
if(!StringUtils.isEmpty(end)){
wrapper.le(“gmt_modified”,end);
}
wrapper.orderByDesc(“gmt_create”);
//wrapper.
teacherService.page(pageTeacher,wrapper);
long total = pageTeacher.getTotal();
List records = pageTeacher.getRecords();
return R.Ok().data(“total”,total).data(“rows”,records);
}
//添加讲师接口的方法
@PostMapping(“addTeacher”)
public R addTeacher(@RequestBody EduTeacher eduTeacher){
boolean save = teacherService.save(eduTeacher);
if(save){
return R.Ok();
}else {
return R.error();
}
}
@GetMapping(“getTeacher/{id}”)
public R getTeacher(@PathVariable String id){
EduTeacher byId = teacherService.getById(id);
return R.Ok().data(“teacher”,byId);
}
@PostMapping(“updateTeacher”)
public R updateTeacher(@RequestBody EduTeacher eduTeacher){
boolean flag = teacherService.updateById(eduTeacher);
if(flag){
return R.Ok();
}else {
return R.error();
}
}
}
3、前端讲师列表
<el-button type=“primary” icon=“el-icon-upload” @click=“imagecropperShow=true”>更换头像
<image-cropper
v-show=“imagecropperShow”
:width=“300”
:height=“300”
:key=“imagecropperKey”
:url=“BASE_API+‘/eduoss/fileoss’”
field=“file”
@close=“close”
@crop-upload-success=“cropSuccess”/>
<el-button :disabled=“saveBtnDisabled” type=“primary” @click=“saveOrUpdate”>保存
4、添加讲师页面
<el-date-picker
v-model=“teacherQuery.begin”
type=“datetime”
placeholder=“选择开始时间”
value-format=“yyyy-MM-dd HH:mm:ss”
default-time=“00:00:00”
/>
<el-date-picker
v-model=“teacherQuery.end”
type=“datetime”
placeholder=“选择截止时间”
value-format=“yyyy-MM-dd HH:mm:ss”
default-time=“00:00:00”
/>
<el-button type=“primary” icon=“el-icon-search” @click=“getList()”>查询
<el-button type=“default” @click=“resetData()”>清空
<el-table
:data=“list”
border
fit
highlight-current-row>
<el-table-column
label=“序号”
width=“70”
align=“center”>
{{ (page - 1) * limit + scope.$index + 1 }}
{{ scope.row.level===1?‘高级讲师’:‘首席讲师’ }}
最后
现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**
el=“序号”
width=“70”
align=“center”>
{{ (page - 1) * limit + scope.$index + 1 }}
{{ scope.row.level===1?‘高级讲师’:‘首席讲师’ }}
最后
现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**
[外链图片转存中…(img-ctb3OkJX-1719200455085)]