当前位置: 首页 > news >正文

广州白云学校网站建设上海传媒公司排行榜

广州白云学校网站建设,上海传媒公司排行榜,客户为什么要做网站,qq是腾讯旗下的吗前后端分离开发 前端 html, css, js, jq 主要作用#xff1a;数据显示 ajax后端 controller service mapper 主要作用#xff1a;返回数据或操作数据 接口 讲师管理模块#xff08;后端#xff09; 准备工作 创建数据库#xff0c;创建讲师数据库表 CREATE TABLE edu…前后端分离开发 前端 html, css, js, jq 主要作用数据显示 ajax后端 controller service mapper 主要作用返回数据或操作数据 接口 讲师管理模块后端 准备工作 创建数据库创建讲师数据库表 CREATE TABLE edu_teacher (id char(19) NOT NULL COMMENT 讲师ID,name varchar(20) NOT NULL COMMENT 讲师姓名,intro varchar(500) NOT NULL DEFAULT COMMENT 讲师简介,career varchar(500) DEFAULT NULL COMMENT 讲师资历,一句话说明讲师,level int(10) unsigned NOT NULL COMMENT 头衔 1高级讲师 2首席讲师,avatar varchar(255) DEFAULT NULL COMMENT 讲师头像,sort int(10) unsigned NOT NULL DEFAULT 0 COMMENT 排序,is_deleted tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT 逻辑删除 1true已删除 0false未删除,gmt_create datetime NOT NULL COMMENT 创建时间,gmt_modified datetime NOT NULL COMMENT 更新时间,PRIMARY KEY (id),UNIQUE KEY uk_name (name) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT讲师;创建父工程 pom类型管理版本依赖和公共依赖 springboot工程 子模块1 maven工程 子子模块1 maven工程子子模块2 子模块2 创建项目结构 创建父工程在pom.xml里面加上一个标签将它修改成pom工程 把dependiences删掉放在子模块中父工程只管理版本 添加下面的标签确定依赖版本 propertiesjava.version1.8/java.versionguli.version0.0.1-SNAPSHOT/guli.versionmybatis-plus.version3.0.5/mybatis-plus.versionvelocity.version2.0/velocity.versionswagger.version2.7.0/swagger.versionaliyun.oss.version2.8.3/aliyun.oss.versionjodatime.version2.10.1/jodatime.versionpoi.version3.17/poi.versioncommons-fileupload.version1.3.3/commons-fileupload.versioncommons-io.version2.6/commons-io.versionhttpclient.version4.5.1/httpclient.versionjwt.version0.7.0/jwt.versionaliyun-java-sdk-core.version4.3.3/aliyun-java-sdk-core.versionaliyun-sdk-oss.version3.1.0/aliyun-sdk-oss.versionaliyun-java-sdk-vod.version2.15.2/aliyun-java-sdk-vod.versionaliyun-java-vod-upload.version1.4.11/aliyun-java-vod-upload.versionaliyun-sdk-vod-upload.version1.4.11/aliyun-sdk-vod-upload.versionfastjson.version1.2.28/fastjson.versiongson.version2.8.2/gson.versionjson.version20170516/json.versioncommons-dbutils.version1.7/commons-dbutils.versioncanal.client.version1.1.0/canal.client.versiondocker.image.prefixzx/docker.image.prefixcloud-alibaba.version0.2.2.RELEASE/cloud-alibaba.versionswagger-version2.0.1/swagger-versionproject-version0.0.1-SNAPSHOT/project-version /properties配置dependencyManagement锁定依赖的版本 dependencyManagementdependencies!--Spring Cloud--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionHoxton.RELEASE/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency!--mybatis-plus 持久层--dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion${mybatis-plus.version}/version/dependency!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 --dependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity-engine-core/artifactIdversion${velocity.version}/version/dependency!--swagger--dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactIdversion${swagger.version}/version/dependency!--swagger ui--dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger-ui/artifactIdversion${swagger.version}/version/dependency!--aliyunOSS--dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion${aliyun.oss.version}/version/dependency!--日期时间工具--dependencygroupIdjoda-time/groupIdartifactIdjoda-time/artifactIdversion${jodatime.version}/version/dependency!--xls--dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion${poi.version}/version/dependency!--xlsx--dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion${poi.version}/version/dependency!--文件上传--dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion${commons-fileupload.version}/version/dependency!--commons-io--dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion${commons-io.version}/version/dependency!--httpclient--dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion${httpclient.version}/version/dependencydependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion${gson.version}/version/dependency!-- JWT --dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion${jwt.version}/version/dependency!--aliyun--dependencygroupIdcom.aliyun/groupIdartifactIdaliyun-java-sdk-core/artifactIdversion${aliyun-java-sdk-core.version}/version/dependencydependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion${aliyun-sdk-oss.version}/version/dependencydependencygroupIdcom.aliyun/groupIdartifactIdaliyun-java-sdk-vod/artifactIdversion${aliyun-java-sdk-vod.version}/version/dependencydependencygroupIdcom.aliyun/groupIdartifactIdaliyun-java-vod-upload/artifactIdversion${aliyun-java-vod-upload.version}/version/dependencydependencygroupIdcom.aliyun/groupIdartifactIdaliyun-sdk-vod-upload/artifactIdversion${aliyun-sdk-vod-upload.version}/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion${fastjson.version}/version/dependencydependencygroupIdorg.json/groupIdartifactIdjson/artifactIdversion${json.version}/version/dependencydependencygroupIdcommons-dbutils/groupIdartifactIdcommons-dbutils/artifactIdversion${commons-dbutils.version}/version/dependencydependencygroupIdcom.alibaba.otter/groupIdartifactIdcanal.client/artifactIdversion${canal.client.version}/version/dependencydependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactIdversion${swagger-version}/version/dependencydependencygroupIdcom.jack/groupIdartifactIdservice/artifactIdversion${project-version}/version/dependencydependencygroupIdcom.liuscoding/groupIdartifactIdcommon_utils/artifactIdversion${project-version}/version/dependency/dependencies /dependencyManagement创建子模块 同样创建之后添加packing标签导入依赖 dependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-ribbon/artifactId/dependency!--hystrix依赖主要是用 HystrixCommand --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix/artifactId/dependency!--服务注册--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!--服务调用--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--mybatis-plus--dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactId/dependency!--mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 --dependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity-engine-core/artifactId/dependency!--swagger--dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactId/dependencydependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger-ui/artifactId/dependency!--lombok用来简化实体类需要安装lombok插件--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!--xls--dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactId/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactId/dependencydependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactId/dependency!--httpclient--dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactId/dependency!--commons-io--dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactId/dependency!--gson--dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactId/dependencydependencygroupIdcom.jack/groupIdartifactIdservice/artifactId/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency /dependencies创建子子模块 讲师管理模块配置 创建application.properties # 服务端口 server.port8001# 服务名 spring.application.nameservice_edu# 环境配置: dev, test, prod spring.profiles.activedev# mysql数据库连接 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/guli?serverTimezoneGMT%2B8 spring.datasource.usernameroot spring.datasource.passwordxxxxx# mybatis日志 mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl编写controller service mapper代码内容 mp提供了代码生成器生成相关代码 public class CodeGenerator {Testpublic void run() {// 1、创建代码生成器AutoGenerator mpg new AutoGenerator();// 2、全局配置GlobalConfig gc new GlobalConfig();String projectPath System.getProperty(user.dir);gc.setOutputDir(projectPath /src/main/java);gc.setAuthor(testjava);gc.setOpen(false); //生成后是否打开资源管理器gc.setFileOverride(false); //重新生成时文件是否覆盖gc.setServiceName(%sService); //去掉Service接口的首字母Igc.setIdType(IdType.ID_WORKER); //主键策略gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型gc.setSwagger2(true);//开启Swagger2模式mpg.setGlobalConfig(gc);// 3、数据源配置DataSourceConfig dsc new DataSourceConfig();dsc.setUrl(jdbc:mysql://localhost:3306/guli?serverTimezoneGMT%2B8);dsc.setDriverName(com.mysql.cj.jdbc.Driver);dsc.setUsername(root);dsc.setPassword(020406);dsc.setDbType(DbType.MYSQL);mpg.setDataSource(dsc);// 4、包配置PackageConfig pc new PackageConfig();pc.setParent(com.jack);pc.setModuleName(eduservice); //模块名pc.setController(controller);pc.setEntity(entity);pc.setService(service);pc.setMapper(mapper);mpg.setPackageInfo(pc);// 5、策略配置StrategyConfig strategy new StrategyConfig();strategy.setInclude(edu_teacher); // 表名称strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略strategy.setTablePrefix(pc.getModuleName() _); //生成实体时去掉表前缀strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略strategy.setEntityLombokModel(true); // lombok 模型 Accessors(chain true) setter链式操作strategy.setRestControllerStyle(true); //restful api风格控制器strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符mpg.setStrategy(strategy);// 6、执行mpg.execute();} }生成出来的结果 测试一下 编写Controller RestController RequestMapping(/eduservice/teacher) public class EduTeacherController {AutowiredEduTeacherService eduTeacherService;// 1. 查询讲师表所有数据GetMapping(findAll)public ListEduTeacher findAllTeacher() {// 调用service的方法实现查询所有的操作ListEduTeacher list eduTeacherService.list(null);return list;} }创建启动类 SpringBootApplication public class EduApplication {public static void main(String[] args) {SpringApplication.run(EduApplication.class, args);} }新建配置类添加mapperscan注解 Configuration MapperScan(com.jack.eduservice.mapper) public class EduConfig { }给Mapper加上Mapper注解 设置日期格式 # 设置日期格式 spring.jackson.date-formatyyyy-MM-dd HH:mm:ss spring.jackson.time-zoneGMT8测试 讲师逻辑删除功能 在配置类里配置逻辑删除插件 Bean public ISqlInjector sqlInjector() {return new LogicSqlInjector(); }在实体类属性上加上注解 ApiModelProperty(value 逻辑删除 1true已删除 0false未删除) TableLogic private Integer isDeleted;编写Controller方法 DeleteMapping({id}) public boolean removeTeacher(PathVariable Integer id) {return eduTeacherService.removeById(id); }如何测试 delete提交没有办法通过浏览器直接提交 借助一些工具进行测试: 1. swagger测试重点 2. postman了解 整合swagger 生成在线接口文档方便接口测试 创建一个公共模块 整合swagger为了所有模块都能用 创建子模块common再创建service_base模块新建配置类 Configuration EnableSwagger2 public class SwaggerConfig {Beanpublic Docket webApiConfig(){return new Docket(DocumentationType.SWAGGER_2).groupName(webApi).apiInfo(webApiInfo()).select().paths(Predicates.not(PathSelectors.regex(/admin/.*))).paths(Predicates.not(PathSelectors.regex(/error.*))).build();}private ApiInfo webApiInfo(){return new ApiInfoBuilder().title(网站-课程中心API文档).description(本文档描述了课程中心微服务接口定义).version(1.0).contact(new Contact(java, http://atguigu.com, 1123qq.com)).build();} }具体使用 在service_edu中引入service_base依赖 还需要在启动类配置扫描组件以便Swagger的配置类生效 SpringBootApplication ComponentScan(basePackages {com.jack}) public class EduApplication {public static void main(String[] args) {SpringApplication.run(EduApplication.class, args);} }访问swagger http://localhost:8001/swagger-ui.html 可以在Controller上添加注解增强swagger文档的可读性 统一返回数据格式 在common模块创建子模块 common_utils 创建interface定义数据返回状态码 成功 20000失败 20001 public interface ResultCode {public static Integer SUCCESS 20000;public static Integer ERROR 20001; }创建结果类 package com.jack.commonutils;import io.swagger.annotations.ApiModelProperty; import lombok.Data;import java.util.HashMap; import java.util.Map;// 统一返回结果的类 Data public class R {ApiModelProperty(value 是否成功)private Boolean success;ApiModelProperty(value 返回码)private Integer code;ApiModelProperty(value 返回消息)private String message;ApiModelProperty(value 返回数据)private MapString, Object data new HashMap();// 把构造方法私有化private R() {}// 静态方法public static R ok() {R r new R();r.setSuccess(true);r.setCode(ResultCode.SUCCESS);r.setMessage(成功);return r;}// 失败public static R error() {R r new R();r.setSuccess(false);r.setCode(ResultCode.ERROR);r.setMessage(失败);return r;}public R success(Boolean success) {this.setSuccess(success);return this;}public R message(String message) {this.setMessage(message);return this;}public R code(Integer code) {this.setCode(code);return this;}public R data(String key, Object value) {this.data.put(key, value);return this;}public R data(MapString, Object map) {this.setData(map);return this;} }使用统一结果 先在Service模块引入依赖 dependencygroupIdcom.jack/groupIdartifactIdcommon_utils/artifactId /dependency将Controller中的返回值都改为R类型 Api(description 讲师管理) RestController RequestMapping(/eduservice/teacher) public class EduTeacherController {AutowiredEduTeacherService eduTeacherService;// 1. 查询讲师表所有数据ApiOperation(value 所有讲师列表)GetMapping(findAll)public R findAllTeacher() {// 调用service的方法实现查询所有的操作ListEduTeacher list eduTeacherService.list(null);return R.ok().data(list, list);}ApiOperation(value 根据ID删除讲师)DeleteMapping({id})public R removeTeacher(PathVariable String id) {boolean flag eduTeacherService.removeById(id);if(flag) {return R.ok();} else {return R.error();}}}讲师分页功能 配置分页插件 Bean public PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor(); }编写讲师分页查询方法 // 分页查询讲师方法 GetMapping(pageTeacher/{current}/{limit}) public R pageListTeacher(PathVariable(current)Long current,PathVariable(limit) Long limit) {// 创建page对象PageEduTeacher page new Page(current, limit);// 调用方法实现分页// 调用方法的时候底层封装把分页的数据封装到page对象里面eduTeacherService.page(page, null);long total page.getTotal(); // 总记录数ListEduTeacher records page.getRecords(); /*Map map new HashMap();map.put(total, total);map.put(rows, records);return R.ok().data(map);*/return R.ok().data(total, total).data(rows, records); }多条件组合分页查询 把条件值传递到接口里面 把条件值封装到对象里面把对象传递到接口里面 VO对象 创建VO类 Data ApiModel(教师查询对象) public class TeacherQuery {ApiModelProperty(教师名称模糊查询)private String name;ApiModelProperty(头衔 1 高级讲师 2 首席讲师)private Integer level;ApiModelProperty(value 查询开始时间,example 2020-01-01 10:10:10)/*** 注意这里使用的是String类型前端传过来的数据无需进行类型转换。*/private String begin;ApiModelProperty(value 查询结束时间,example 2020-04-01 10:10:10)private String end; }根据条件值进行判断拼接条件 ApiOperation(多条件组合查询带分页) GetMapping(pageTeacherCondition/{current}/{limit}) public R pageTeacherCondition(PathVariable long current, PathVariable long limit,TeacherQuery teacherQuery) {PageEduTeacher page new Page(current, limit);// 构建条件QueryWrapperEduTeacher queryWrapper new QueryWrapper();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_create, end);}eduTeacherService.page(page, queryWrapper);long total page.getTotal(); // 总记录数ListEduTeacher records page.getRecords(); // listreturn R.ok().data(total, total).data(rows, records); }讲师添加 配置字段自动填充 编写Controller ApiOperation(添加讲师) PostMapping(addTeacher) public R addTeacher(RequestBody EduTeacher eduTeacher) {boolean save eduTeacherService.save(eduTeacher);if(save) {return R.ok();} else {return R.error();} }讲师修改功能 根据讲师id进行查询用于回显 ApiOperation(根据讲师id进行查询) GetMapping(getTeacher/{id}) public R getTeacher(PathVariable String id) {EduTeacher teacher eduTeacherService.getById(id);return R.ok().data(teacher, teacher); }讲师修改 ApiOperation(讲师修改) PostMapping(updateTeacher) public R updateTeacher(RequestBody EduTeacher teacher) {boolean b eduTeacherService.updateById(teacher);return b ? R.ok() : R.error(); }统一异常处理 统一异常处理类 ControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(Exception.class) // 指定出现什么异常会被处理ResponseBody // 为了能够返回数据public R error(Exception e) {e.printStackTrace();return R.error().message(执行了全局异常处理);} }
http://www.dnsts.com.cn/news/91474.html

相关文章:

  • 企业网站建设费用会计科目西安建厂
  • 收录快的门户网站网站设置专栏有什么好处
  • 阿里云做的网站空间邯郸网络安装
  • 怎样申请免费的网站空间石景山区公司网站建设
  • 做网站建设的公司用手机可以做网站
  • 企业的网站建设怎么记科目泰兴网站建设价格
  • 创新网站设计wordpress搭建电子商城
  • 网站的后台系统怎么进入wordpress类似的工具
  • 做会员体系的网站重庆在线高校平台登录
  • 与狗狗做网站专做废旧电子电路板配件回收的网站
  • 单位做网站资料需要什么软件统一登录入口
  • 深圳网站制作公司怎么样本科自考
  • 网站建设音乐插件怎么弄建筑模板使用寿命多久
  • 烟台建站程序湛江专业网站制作
  • 呼和浩特市网站公司电子商务网站建设步骤一般为
  • 长沙市互联网加网站wordpress服务器不支持中文tag
  • 效果图制作网站有哪些大连工程预算服务
  • 想要做网站的企业微网站首页
  • 鄂尔多斯网站建设鄂尔多斯珠宝类网站模板
  • 网站开发软硬件条件网络服务公司名字
  • 网站如何做h5动态页面设计dw怎样建设网站
  • 怎样不花钱做网站wordpress 获取当前分类id
  • 3d网站建设网络直接营销渠道
  • 网站 框架河北建设工程信息网查看
  • 做音频主播的网站网站 改版
  • 网站栏目规划注意事项想学装修设计怎么入门
  • 优秀的公司网站网站seo技巧
  • 电商sku是什么意思培训seo多少钱
  • 针织东莞网站建设技术支持什么是企业vi设计
  • 小型网站开发成本学前端好找工作吗