1讲师管理模块
一. 模块:讲师管理模块
1具体功能
 1.1讲师增删改查(条件查询加分页)
 1.2swagger
 1.3统一返回结果
 1.4统一异常处理
 1.5前端知识
2具体知识点
 2.1mp代码生成器
- 使用现成的生成entity,mapper,service,controller层内容
- 修改其中的数据库对应表名,以及生成地方名字就行了
 2.2swagger测试
- 
使用现成的swagger配置文件(一般放在common模块下,这样其他模块引用common模块就行了,别忘记引入依赖) 
- 
在使用的模块启动类上加上@ComponentScan(basePackages = {"com.fao"}) - 
@SpringBootApplication //因为springboot默认扫描同一个包下 但是我们现在要使用common下的swagger所以要这个类 //下面这样就把com.fao下面的全扫描到了 @ComponentScan(basePackages = {"com.fao"}) public class EduApplication { public static void main(String[] args) { SpringApplication.run(EduApplication.class,args); } }
 
- 
- 
登录locaohost:xxxx/swagger-ui.html 
- 
接口说明和参数说明 - 
定义在类上:@Api 
- 
定义在方法上:@ApiOperation 
- 
定义在参数上:@ApiParam 
- 
@Api(tags = "讲师管理接口") @RestController @RequestMapping("/admin/vod/teacher") //@CrossOrigin public class TeacherController { @Autowired private TeacherService teacherService; // http://localhost:8301/admin/vod/teacher/remove/1 //2 逻辑删除讲师 @ApiOperation("逻辑删除讲师") @DeleteMapping("remove/{id}") public Result removeTeacher(@ApiParam(name = "id", value = "ID", required = true) @PathVariable Long id) { boolean isSuccess = teacherService.removeById(id); if(isSuccess) { return Result.ok(null); } else { return Result.fail(null); } } }
 
- 
 2.3统一返回结果
- 创建结果类
- 然后返回结果类
 2.4统一异常处理
- 
因为不处理的话就和统一返回结果不一样了 
- 
第一步:先在common包下创建异常处理类 
- 
第二步:添加注解使用aop,@ControllerAdvice 
- 
第三步:异常处理类编写具体针对异常处理方法,方法上添加注解@ExceptionHandler 
- 
//全局异常处理 @ExceptionHandler(Exception.class)//还有特定异常处理和自定义异常处理 @ResponseBody//返回json数据 因为这里没有RestController public Result error(Exception e) { System.out.println("全局....."); e.printStackTrace(); return Result.fail(null).message("执行全局异常处理"); }
 2.5条件分页查询讲师列表接口
- 
第一步配置mp配置类 - 
@Configuration @MapperScan("com.fao.demo.eduservice.mapper") public class EduConfig { //逻辑删除插件 @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); } /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
- 
//实体类对应注解 @ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除") @TableLogic private Integer isDeleted; @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) private Date gmtCreate; @ApiModelProperty(value = "更新时间") @TableField(fill = FieldFill.INSERT_UPDATE) private Date gmtModified;
 
- 
- 
controller具体实现 - 
//3 条件查询分页 //@RequestBody(required = false)不加也行,加了就是 //a提交参数以json格式 bflase表示条件值可以为空 c一定要和post提交一起用 @ApiOperation("条件查询分页") @PostMapping("findQueryPage/{current}/{limit}") public Result findPage(@PathVariable long current, @PathVariable long limit, @RequestBody(required = false) TeacherQueryVo teacherQueryVo) { //创建page对象 Page<Teacher> pageParam = new Page<>(current,limit); //判断teacherQueryVo对象是否为空 if(teacherQueryVo == null) {//查询全部 IPage<Teacher> pageModel = teacherService.page(pageParam,null); return Result.ok(pageModel); } else { //获取条件值, String name = teacherQueryVo.getName(); Integer level = teacherQueryVo.getLevel(); String joinDateBegin = teacherQueryVo.getJoinDateBegin(); String joinDateEnd = teacherQueryVo.getJoinDateEnd(); //进行非空判断,条件封装 QueryWrapper<Teacher> wrapper = new QueryWrapper<>(); if(!StringUtils.isEmpty(name)) { wrapper.like("name",name); } if(!StringUtils.isEmpty(level)) { wrapper.eq("level",level); } if(!StringUtils.isEmpty(joinDateBegin)) { wrapper.ge("join_date",joinDateBegin); } if(!StringUtils.isEmpty(joinDateEnd)) { wrapper.le("join_date",joinDateEnd); } //调用方法分页查询 IPage<Teacher> pageModel = teacherService.page(pageParam, wrapper); //返回 return Result.ok(pageModel); } }
 
- 
- 
接口返回 - 
需要注意@RestController返回是json格式 
- 
可以在application.properties中设置json时间格式 - 
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8
 
- 
- 
分页@RequestBody(required = false) TeacherQueryVo teacherQueryVo表示 - 提交参数以json格式
- false表示条件值可以为空
- 一定要和post提交一起用
 
- 
前端注意 - 
import request from '@/utils/request' const api_name = '/admin/vod/teacher' export default { //讲师条件查询分页 // current当前页 limit每页记录数 searchObj条件对象 pageList(current,limit,searchObj) { return request({ //下面是模板字符串方式 url: `${api_name}/findQueryPage/${current}/${limit}`, method: 'post', //使用json格式传递 写法 data:searchObj //使用普通格式传递 写法 params:searchObj //因为后台是@RequestBody所以这里用json格式传递 data:searchObj }) } }
 
- 
 
- 
 2.6前端知识
- 
JS - ECMAScript:语句语法规范
- BOM:浏览器对象模型
- DOM:文档对象模型
 
- 
es6语法 - 定义变量let
- 定义常量const
- 解构赋值
- 模板字符串``
- 方法简写
- 对象拓展运算符
- 箭头函数
 
- 
vue指令 - v-bind/:单向绑定
- v-model双向绑定
- v-on/@绑定事件
- v-if条件判断
- v-for循环
 
- 
vue生命周期 - created:在页面渲染之前执行
- mounted:在页面渲染之后执行
 
- 
vue组件 - 
定义组件 - 
var app = new Vue({ el: '#app', // 定义局部组件,这里可以定义多个局部组件 components: { //组件的名字 'Navbar': { //组件的内容 template: '<ul><li>首页</li><li>学员管理</li></ul>' } } })
 
- 
- 
使用组件 - 
<div id="app"> <Navbar></Navbar> </div>
 
- 
 
- 
- 
vue路由 - 
<el-button class="btn-add" @click="add()" style="margin-left: 10px;">添加</el-button>
- 
//跳转到添加表单页面 add() { this.$router.push({path:'/vod/teacher/create'}) }
 
- 
- 
axios - 
var app = new Vue({ el: '#app', data: { memberList: []//数组 }, created() { this.getList() }, methods: { getList(id) { //vm = this axios.get('data.json') .then(response => { console.log(response) this.memberList = response.data.data.items }) .catch(error => { console.log(error) }) } } })
 
- 
- 
nodejs - nodejs是js运行环境,类似于java里面的jdk,不需要浏览器通过nodejs直接运行js文件
- nodejs作为服务端使用
 
- 
npm - 是nodejs包管理根据,类似于Maven
 
- 
babel - 是一个广泛使用的转码器,可以将ES6转为ES5,从而在现有环境下运行执行
 
2.7maven加载xml问题
- 
出现invalid bound statement报错 - 先检查xml是否名字有错
- 第二就是maven加载机制
 
- 
maven加载机制 - maven默认情况下,在src-main-java目录下面,只会加载java类型文件,其他类型不会加载
 
- 
解决 - 
1直接复制 
- 
2把xml放到resources目录下 
- 
3修改pom.xml和application - 
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.yml</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.yml</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
- 
mybatis-plus.mapper-locations=classpath:com/fao/ggkt/vod/mapper/xml/*.xml
 
- 
 
- 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号