栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

项目功能实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

项目功能实现

一.项目的前置条件:

数据库的表:
edu_teacher及其对应的实体类

edu_subject及其对应的实体类

@Data//自动生成get和set方法
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduTeacher对象", description="讲师")
public class EduTeacher implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "讲师ID")
    @TableId(value = "id", type = IdType.ID_WORKER_STR)//使用雪花算法并且将算出来的id变成String的
    private String id;
    @ApiModelProperty(value = "讲师姓名")
    private String name;
    @ApiModelProperty(value = "讲师简介")
    private String intro;
    @ApiModelProperty(value = "讲师资历,一句话说明讲师")
    private String career;
    @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
    private Integer level;
    @ApiModelProperty(value = "讲师头像")
    private String avatar;
    @ApiModelProperty(value = "排序")
    private Integer sort;
    @ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
    @TableLogic//逻辑删除的注解
    private Boolean isDeleted;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill=FieldFill.INSERT)//自动填充
    private Date gmtCreate;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill=FieldFill.INSERT_UPDATE)//自动填充
    private Date gmtModified;
}
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduSubject对象", description="课程科目")
public class EduSubject implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "课程类别ID")
    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    @ApiModelProperty(value = "类别名称")
    private String title;

    @ApiModelProperty(value = "父ID")
    private String parentId;

    @ApiModelProperty(value = "排序字段")
    private Integer sort;

    @ApiModelProperty(value = "创建时间")
    @TableField(fill= FieldFill.INSERT)
    private Date gmtCreate;

    @ApiModelProperty(value = "更新时间")
    @TableField(fill= FieldFill.INSERT_UPDATE)
    private Date gmtModified;

}

配置文件application.properties:

# 端口号
server.port=8001
spring.application.name=service-edu
# 开发环境
spring.profiles.active=dev
# mysql的配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
#json
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
#设置日志的等级
#logging.level.root=debug
#mybatis的日志配置
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

maven依赖:

二.单表的增删改查功能 1.添加教师(需要前端上传一个Json格式的教师对象,不返回数据)
    //Controller层代码
    @Autowired
    private EduTeacherServiceImpl eduTeacherService;
    @PostMapping("/addTeacher")
    public R addTeacher(@RequestBody EduTeacher eduTeacher){
        boolean b = eduTeacherService.save(eduTeacher);
        if(b){
            return R.ok();
        }else{
            return R.error();
        }
    }
    //mapper和Service里面没有代码,save方法在BaseMapper里面封装好了
2.通过条件分页查询教师数据(需要页数和每页的记录数,返回查询的总数和查询的结果)
    //Controller层代码
    @PostMapping("/pageTeacherCondition/{current}/{limit}")
    public R pageTeacherCondition(@PathVariable long current,
                                  @PathVariable long limit,
                                 @RequestBody(required=false) TeacherQuery teacherQuery){
        Page pageTeacher = new Page<>(current,limit);//用于分页
        QueryWrapper queryWrapper = new QueryWrapper<>();//用于设置查询的条件
        //多条件组合查询,判断条件值是不是空,通过创建动态sql语句来实现
        String name = teacherQuery.getName();
        Integer level = teacherQuery.getLevel();
        String begin = teacherQuery.getBegin();
        String end = teacherQuery.getEnd();
        if(!StringUtils.isEmpty(name)){
            queryWrapper.like("name",name);//前一个是字段的名称,后一个是传过来的参数
        }
        if(!StringUtils.isEmpty(level)){
            queryWrapper.eq("level",level);
        }
        if(!StringUtils.isEmpty(begin)){
            queryWrapper.ge("gmt_create",begin);//≥
        }
        if(!StringUtils.isEmpty(end)){
            queryWrapper.le("gmt_modified",end);//≤
        }
        queryWrapper.orderByDesc("gmt_create");
        //进行查询
        eduTeacherService.page(pageTeacher,queryWrapper);
        long total = pageTeacher.getTotal();//获得pageTeacher对象中封装的总记录数
        List records = pageTeacher.getRecords();//获得pageTeacher对象中封装的所有记录
        return R.ok().data("total",total).data("items",records);
    }
//这个是进行分页查询的条件封装的实体类
@Data
public class TeacherQuery {
    @ApiModelProperty(value = "教师名称,模糊查询")
    private String name;
    @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
    private Integer level;
    @ApiModelProperty(value = "查询开始时间", example = "2019-01-01 10:10:10")
    private String begin;//注意,这里使用的是String类型,前端传过来的数据无需进行类型转换
    @ApiModelProperty(value = "查询结束时间", example = "2019-12-01 10:10:10")
    private String end;
}
3.删除教师信息通过id(需要一个通过路径赋值的id,不返回数据)
    //Controller层代码
    @Autowired
    private EduTeacherServiceImpl eduTeacherService; 
    @DeleteMapping("/{id}")
    public R deleteteacher(@PathVariable String id){
        boolean flag = eduTeacherService.removeById(id);
        if(flag){
            return R.ok();
        }else{
            return R.error();
        }
    }
    //mapper和Service里面没有代码,removeById方法在BaseMapper里面封装好了
4.修改教师信息(需要前端上传一个Json格式的教师对象,不返回数据)
    //Controller层代码
    @Autowired
    private EduTeacherServiceImpl eduTeacherService; 
    @PostMapping("/updateTeacher")
    public R updateTeacher(@RequestBody EduTeacher eduTeacher){
        boolean b = eduTeacherService.updateById(eduTeacher);
        if(b){
            return  R.ok();
        }else{
            return  R.error();
        }
    }
    mapper和Service里面没有代码,removeById方法在updateById里面封装好了
 5.查询所有的课程课程分类信息,然后在前端进行树状展示

      将二类课程封装到一类课程里面(不需要数据,返回课程对象的List集合,在第一类课程类里添加以第二类课程为泛型的List集合,分别从数据库查出两个List集合,然后用BeanUtils进行封装就好)。

//这个是一级课程分类的实体类,每个一级实体类都含有多个二级课程分类的实体类
@Component
@Data
public class OneSubject {
    //比如说,前端开发包含vue,JavaScript,node...
    private String id;//这个是一级课程的id
    private String title;
    private List children=new ArrayList<>();
}
//这是二级课程分类的实体类
@Component
@Data
public class TwoSubject {
    private String id;
    private String title;
}

    //Controller层代码
    @Autowired
    private  EduSubjectService  eduSubjectService;
    @GetMapping("/getAllSubject")
    public R getAllSubject(){
        List subjects=eduSubjectService.getAllSubjects();
        return R.ok().data("subjects",subjects);
    }
    //Service层代码
    @Override
    public List getAllSubjects() {
        //查询所有的一级分类
        QueryWrapper oneSubjectQueryWrapper = new QueryWrapper<>();
        oneSubjectQueryWrapper.eq("parent_id","0");
        List list = this.list(oneSubjectQueryWrapper);
        //查询所有的二级分类
        QueryWrapper twoSubjectQueryWrapper = new QueryWrapper<>();
        twoSubjectQueryWrapper.ne("parent_id","0");
        List list2 = this.list(twoSubjectQueryWrapper);
        //创建标准返回结果对象
        ArrayList onesubjects = new ArrayList<>();
        //把二级分类插入到一级分类中
        for (EduSubject Subject1 : list) {
            OneSubject onesubject = new OneSubject();
            BeanUtils.copyProperties(Subject1,onesubject);
            onesubjects.add(onesubject);
            String pid = Subject1.getId();
            //拿二级分类去填一级分类的对象
            for (EduSubject subject2 : list2) {
                if(subject2.getParentId().equals(pid)){
                TwoSubject twosubject = new TwoSubject();
                BeanUtils.copyProperties(subject2,twosubject);
                onesubject.getChildren().add(twosubject);
                }

            }
        }
        return onesubjects;
    }
三.多表的增删改查功能

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号