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

动漫做暧视频在线观看网站做临时网站

动漫做暧视频在线观看网站,做临时网站,深圳福田,长春市做网站哪家好#x1f4dd;个人主页#xff1a;哈__ 期待您的关注 目录 一、#x1f525;今日目标 二、#x1f4c2;打开SpringBoot项目 2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建… 个人主页哈__ 期待您的关注  目录 一、今日目标 二、打开SpringBoot项目  2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建MybatisPlus的配置类 三、使用MybatisPlus逆向工程生成Ebook 四、Ebook查询功能的开发 一、今日目标 上一篇文章已经带领大家把前后端的SpringBoot和Vue的架子搭了起来今天呢我就要带大家开始上手开发我们的wiki知识库了今天主要是带领大家把后端中一些基本的东西写出来例如依赖、部分的工具类等还会带大家实现电子书模块的查询功能但是通过PostMan进行地测试的。 二、打开SpringBoot项目  2.1 导入所需依赖 这里大家可能使用的不是阿里云服务器创建的SpringBoot项目所以我把整个的POM文件复制了上来。依赖呢我现在只用到了这么多如果后边我们缺了什么依赖的话还会在加的。 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.my/groupIdartifactIdhawiki/artifactIdversion0.0.1-SNAPSHOT/versionnamehawiki/namedescriptionhawiki/descriptionpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version2.7.16/spring-boot.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--aop切面--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency!--整合redis--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!--数据校验--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency!--websocket通信--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.3.1/version/dependency!-- mybatisplus逆向工程 --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion3.3.2/version/dependencydependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity/artifactIdversion1.7/version/dependency!-- 数据库驱动 --dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.70/version/dependency!-- 工具类 --dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.18/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!--日志--dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.my.hawiki.HawikiApplication/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build/project2.2修改application.yml配置文件 在application.yml配置文件中我们要配置数据库的连接信息还要配置redis的连接信息。 spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/wiki?useUnicodetruecharacterEncodingutf-8useSSLfalseserverTimezoneGMTallowPublicKeyRetrievaltruetype: com.zaxxer.hikari.HikariDataSourceusername: rootpassword: 你的数据库密码 logging:config: classpath:logback-spring.xmllevel:com.my.hawiki.mapper: trace  在上方的配置信息你看到了一个名字叫做logging的配置这个是用来配置我们的日志输出的日志信息的配置类使用的是一个xml文件。内容具体如下。首先你要在你的项目的根目录下创建一个名字叫做log的文件夹这样以后的日志信息就会保存到这个文件夹下的两个文件中一个叫做error.log一个叫做trace.log。 ?xml version1.0 encodingUTF-8? configuration!-- lt;!ndash; 修改一下路径--property namePATH value./log/propertyappender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoder!-- Pattern%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n/Pattern--Pattern%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %green(%-18X{LOG_ID})%msg%n/Pattern/encoder/appenderappender nameTRACE_FILE classch.qos.logback.core.rolling.RollingFileAppenderfile${PATH}/trace.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyFileNamePattern${PATH}/trace.%d{yyyy-MM-dd}.%i.log/FileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATPmaxFileSize10MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicylayoutpattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n/pattern/layout/appenderappender nameERROR_FILE classch.qos.logback.core.rolling.RollingFileAppenderfile${PATH}/error.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyFileNamePattern${PATH}/error.%d{yyyy-MM-dd}.%i.log/FileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATPmaxFileSize10MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicylayoutpattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n/pattern/layoutfilter classch.qos.logback.classic.filter.LevelFilterlevelERROR/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appenderroot levelERRORappender-ref refERROR_FILE//rootroot levelTRACEappender-ref refTRACE_FILE//rootroot levelINFOappender-ref refSTDOUT//root /configuration2.3导入MybatisPlus逆向工程工具 我在项目中创建了一个名字为util的软件包。别的包大家可以先不用管这些我之后都会说到的这个util包呢主要就是保存我们的一些工具类。 MybatisPlus逆向工程的代码如下。我另一篇文章也有些过这个逆向工程【Spring】SpringBoot整合MybatisPlusGerneratorMybatisPlus逆向工程-CSDN博客 要注意的是你一定要修改其中的数据库连接信息。 public class MybatisGenerator {public static void main(String[] args) {AutoGenerator autoGenerator new AutoGenerator();DataSourceConfig dataSourceConfig new DataSourceConfig();dataSourceConfig.setDbType(DbType.MYSQL);dataSourceConfig.setDriverName(com.mysql.cj.jdbc.Driver);dataSourceConfig.setUsername(root);dataSourceConfig.setPassword(你的数据库课密码);dataSourceConfig.setUrl(jdbc:mysql://localhost:3306/wiki?useUnicodetruecharacterEncodingUTF-8);autoGenerator.setDataSource(dataSourceConfig);GlobalConfig globalConfig new GlobalConfig();globalConfig.setOpen(false);globalConfig.setOutputDir(System.getProperty(user.dir)/src/main/java);globalConfig.setAuthor(CSDN__哈);globalConfig.setServiceName(%sService);autoGenerator.setGlobalConfig(globalConfig);PackageConfig packageConfig new PackageConfig();packageConfig.setParent(com.my.hawiki);packageConfig.setEntity(domain);packageConfig.setMapper(mapper);//packageConfig.setController(controller);packageConfig.setService(service);packageConfig.setServiceImpl(service.impl);autoGenerator.setPackageInfo(packageConfig);StrategyConfig strategyConfig new StrategyConfig();//是否需要lombokstrategyConfig.setEntityLombokModel(true);//设置命名格式strategyConfig.setNaming(NamingStrategy.underline_to_camel);strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//设置我们的表名 你到底要生成哪张表的框架strategyConfig.setInclude(ebook);autoGenerator.setStrategy(strategyConfig);autoGenerator.execute();} }2.4创建一个公用的返回值 你可能不太理解这句话是什么意思在SpringBoot项目当中我们的每一个请求可能都会返回给前端数据返回的数据一定是一个字符串。但这种方式并不适合我们的需求比如我想返回的信息不仅仅是数据还有一些其他的状态信息。例如当我们程序没出错的时候我想在返回一句话查询成功如果出错了我就返回查询失败这样返回多个参数信息我们就不能使用字符串返回了。 我们需要的是这样的返回值。这是一个JSON类型的数据也可以说是一个对象类型的数据我们直接返回一个对象的话也可以达到这种效果前提是导入了fastjson依赖。 创建的CommonResp如下。这个类在util包下创建的我。 Data AllArgsConstructor public class CommonRespT {/*** 业务上的成功或失败*/private boolean success true;/*** 返回信息*/private String message;/*** 返回泛型数据自定义类型*/private T content;Overridepublic String toString() {final StringBuffer sb new StringBuffer(ResponseDto{);sb.append(success).append(success);sb.append(, message).append(message).append(\);sb.append(, content).append(content);sb.append(});return sb.toString();} } 2.5创建CopyUtil工具类 这个工具类的作用就是把一个类转换为另一个类的形式。也是在util包下。 import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; public class CopyUtil {/*** 单体复制*/public static T T copy(Object source, ClassT clazz) {if (source null) {return null;}T obj null;try {obj clazz.newInstance();} catch (Exception e) {e.printStackTrace();return null;}BeanUtils.copyProperties(source, obj);return obj;}/*** 列表复制*/public static T ListT copyList(List source, ClassT clazz) {ListT target new ArrayList();if (!CollectionUtils.isEmpty(source)) {for (Object c : source) {T obj copy(c, clazz);target.add(obj);}}return target;} } 2.6创建MybatisPlus的配置类 这个类写到了我创建出来的config包下 Configuration public class MyBatisPlusConfig {Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor new PaginationInterceptor();paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(false));return paginationInterceptor;} }  到了这一步我们今天的目标就完成的快差不多了后端的工具类我们今天用到的也差不多就是这些。接下来我就带大家实现电子书接口的查询功能。  这是我们的ebook的数据库接下来我就要写接口去查询这些内容了。 三、使用MybatisPlus逆向工程生成Ebook 打开我给大家的逆向工程的工具类把你要生成的表的名称填写到对应的位置上边我已经给了注释了这里不再展示到底写在哪里了把表名改成ebook然后右键运行工具类等一段时间后就会生成以下几个结构。 controllerservice impldomainmapper xml 四、Ebook查询功能的开发 我们需要的都已经写完了接下来就去实现具体的功能在这之前呢我还需要写两个Param类这两个类的作用就是接收前端给后端传输的一些参数。 PageParam Data public class PageParam {NotNull(message 【页码】不能为空)private Integer page;NotNull(message 【每页条数】不能为空)Max(value 1000, message 【每页条数】不能超过1000)private Integer size;} EbookQueryParam EqualsAndHashCode(callSuper true) Data public class EbookQueryParam extends PageParam {private Long id;private String name;private Long categoryId2; } 除了这两个Param外还需要两个VOVO的作用就是把我们的查询结果进行一个二次封装然后在传给前端比如说你开发登录功能用户成功登陆后你不能把用户的密码直接返回给前端而是要把这个密码的字段删掉在返回给前端。 PageVo Data public class PageVoT {private long total;private ListT list; } EbookQueryVo  Data public class EbookQueryVo {private Long id;private String name;private Long category1Id;private Long category2Id;private String description;private String cover;private Integer docCount;private Integer viewCount;private Integer voteCount; } 打开我们的EbookController写入以下代码。 RestController RequestMapping(/ebook) public class EbookController {ResourceEbookService ebookService;/*** 查询电子书 带有模糊查询* param ebookQueryParam 带有数据校验* return*/RequestMapping(/list)public CommonResp list(Validated EbookQueryParam ebookQueryParam){PageVoEbookQueryVo list ebookService.list(ebookQueryParam);return new CommonResp(true,查找成功,list);} } EbookService代码如下。 public interface EbookService extends IServiceEbook {PageVoEbookQueryVo list(EbookQueryParam ebookQueryParam); }  EbookMapper代码如下。 /*** p* 电子书 Mapper 接口* /p** author CSDN__哈* since 2024-05-26*/ public interface EbookMapper extends BaseMapperEbook {}  EbookServiceImpl代码如下。 package com.my.hawiki.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.my.hawiki.domain.Ebook; import com.my.hawiki.mapper.EbookMapper; import com.my.hawiki.param.EbookQueryParam; import com.my.hawiki.service.EbookService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.my.hawiki.utils.CopyUtil; import com.my.hawiki.vo.EbookQueryVo; import com.my.hawiki.vo.PageVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List;/*** p* 电子书 服务实现类* /p** author CSDN__哈* since 2024-05-26*/ Service public class EbookServiceImpl extends ServiceImplEbookMapper, Ebook implements EbookService {ResourceEbookMapper ebookMapper;Overridepublic PageVoEbookQueryVo list(EbookQueryParam ebookQueryParam) {// 这里创建了一个wrapper用于sql语句条件的拼接LambdaQueryWrapperEbook lambdaQueryWrapper new LambdaQueryWrapper();// 拼接我们传过来的id 就相当于 where id lambdaQueryWrapper.eq(ebookQueryParam.getId()!null,Ebook::getId,ebookQueryParam.getId())// 相当于 where categoryid2 .eq(ebookQueryParam.getCategoryId2()!null,Ebook::getCategory2Id,ebookQueryParam.getCategoryId2())// 相当于 where name like %%.like(StringUtils.isNotBlank(ebookQueryParam.getName()),Ebook::getName,ebookQueryParam.getName());// 这里使用MybataisPlus的page类接收一下前端传来了页号和页的大小PageEbook page new Page(ebookQueryParam.getPage(),ebookQueryParam.getSize());// 这里我们将从数据库中查询的结果封装到一个Page类下PageEbook resultPage ebookMapper.selectPage(page, lambdaQueryWrapper);// 这里我创建了一个PageVo用于返回给前端信息PageVoEbookQueryVo pageVo new PageVo();ListEbookQueryVo list new ArrayList();// 从resultPage中获取从数据库中去除的结果然后把数据插入到list中for (Ebook record : resultPage.getRecords()) {EbookQueryVo ebookQueryVo CopyUtil.copy(record, EbookQueryVo.class);list.add(ebookQueryVo);}pageVo.setList(list);pageVo.setTotal(resultPage.getTotal());return pageVo;} }好了这里就写的差不多了我们可以使用PostMan工具测试一下这里大家需要自己安装一下。 启动我们的启动类并且在启动类上加上一个mapper扫描。之后启动项目 MapperScan(com.my.hawiki.mapper)  可以看到我传入的page是1size是5查询出来的结果没问题。 但大家别忘了我还有一个数据校验呢page和size不能为空。那我们什么也不传入试一试。现在直接查不出来了。 我们看一下后台日志。这里给我们报了个错说明我们的数据校验是有作用的那我不想让他报错这我该怎么做呢我还想使用CommomResp返回一个信息告诉前端错误是什么。 54.346 WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver:208 http-nio-8080-exec-7 Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errorsEOLField error in object ebookQueryParam on field page: rejected value [null]; codes [NotNull.ebookQueryParam.page,NotNull.page,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [ebookQueryParam.page,page]; arguments []; default message [page]]; default message [【页码】不能为空]EOLField error in object ebookQueryParam on field size: rejected value [null]; codes [NotNull.ebookQueryParam.size,NotNull.size,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [ebookQueryParam.size,size]; arguments []; default message [size]]; default message [【每页条数】不能为空]]这里我就要创建一个handler包包下创建一个GlobalExceptionHandler。 GlobalExceptionHandler代码如下。这个类的作用就是捕获我们程序中的异常然后作出处理。 import com.my.hawiki.utils.CommonResp; import org.springframework.validation.BindException; import org.springframework.validation.FieldError; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; RestControllerAdvice public class GlobalExceptionHandler {/*** 校验异常*/ExceptionHandler(BindException.class)public CommonRespString handleBindException(BindException e) {StringBuilder errorMessage new StringBuilder();for (FieldError fieldError : e.getFieldErrors()) {// 这里可以自定义错误信息的格式errorMessage.append(fieldError.getField()).append().append(fieldError.getDefaultMessage()).append(; );}// 去掉最后一个分号和空格if (errorMessage.length() 0) {errorMessage.setLength(errorMessage.length() - 2);}return new CommonResp(false, errorMessage.toString(), null);}}接下来在重新启动项目试试看。 大功告成 电子书查询接口的功能已经测试成功了。
http://www.tj-hxxt.cn/news/137034.html

相关文章:

  • 网站集群建设通知英文二手汽车网站建设
  • 公司做网站哪个公司做得好帝国cms对比WordPress
  • 网站建设教程自学北京vi设计公司 四方之志
  • 有做软件的网站有哪些网站怎么做外链
  • 大连市建设局网站国外设计师wordpress主题
  • 东西湖建设局网站深圳外贸10强公司
  • 建设网站的条件北京网站建设成都
  • 华强北网站建设项目网络图怎么绘制
  • asp网站数据库连接网站建设怎么赚钱
  • 网站做相片无限元宝网页传奇
  • 电子商务网站建设方案书织梦cms收费7800
  • 手机自己制作表白网站app信誉好的中山网站建设
  • 做网站购买备案域名如何加强网站信息建设
  • 国外电子商务网站深圳画册设计公司排名
  • 做网站可以申请专利吗站点提交
  • 美食网站开发详细设计蓝天下品牌运营业务展示
  • 自己做烘焙的网站营销型网站一套
  • 北京网站建设 网络推广婚纱照网站模板
  • 高清做视频在线观看网站如何快速推广网上国网
  • 网站代码加密做二手的网站有哪些
  • 那个企业建网站好湘潭做网站公司选择封象网做网站公司
  • 跨境建站服务公司网站开发计入会计 什么科目
  • 东莞招聘网官方网站爱战网关键词挖掘查询工具
  • 营销型网站小学生手工
  • 承装承修承试材料在哪个网站做网站建设举措
  • asp net做网站视频镇江网站设计
  • 做卡贴的网站做的不好的网站
  • 网站的建设意见搜索网站老是跳出别的网站要怎么做
  • 建网站费用 优帮云桂林昨晚发生的新闻
  • 网站站群 硬盘扩容 申请报告类似AG网站建设