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

根据网站软件做报告巴中+网站建设

根据网站软件做报告,巴中+网站建设,企业网站建设中企动力,安平做网站做推广电话汝之观览#xff0c;吾之幸也#xff01; 从本文开始讲下项目中用到的一些框架和技术#xff0c;最基本的框架使用的是SpringBoot(2.5.10)Mybatis-plus(3.5.3.2)lombok(1.18.28)knife4j(3.0.3)hutool(5.8.21),可以做到代码自动生成#xff0c;满足最基本的增删查改。 一、新… 汝之观览吾之幸也 从本文开始讲下项目中用到的一些框架和技术最基本的框架使用的是SpringBoot(2.5.10)Mybatis-plus(3.5.3.2)lombok(1.18.28)knife4j(3.0.3)hutool(5.8.21),可以做到代码自动生成满足最基本的增删查改。 一、新建SpringBoot项目 使用Idea工具直接创建项目 输入项目名称等 生成web项目 二、配置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/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.10/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.mitool/groupIdartifactIdspringboot/artifactIdversion0.0.1-SNAPSHOT/versionnamespringboot/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionmybatis-plus.version3.5.3.2/mybatis-plus.versionfreemarker.version2.3.29/freemarker.versionlombok.version1.18.28/lombok.versionknife4j.version3.0.3/knife4j.versionhutool.version5.8.21/hutool.versionpagehelper.version1.4.7/pagehelper.versionali.cola.version4.3.2/ali.cola.versionorg.mapstruct.version1.4.2.Final/org.mapstruct.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- mysql 链接--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependency!-- mybatis-plus --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion${mybatis-plus.version}/version/dependency!-- Mybatis-plus 代码生成器 依赖配置 --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion${mybatis-plus.version}/versionexclusionsexclusiongroupIdcom.baomidou/groupIdartifactIdmybatis-plus-extension/artifactId/exclusion/exclusions/dependency!--freemarker依赖--dependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion${freemarker.version}/version/dependency!-- lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/versionscopeprovided/scope/dependency!-- knife4j --dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactIdversion${knife4j.version}/version/dependency!-- hutool --dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion${hutool.version}/version/dependency!-- pagehelper --dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pagehelper.version}/version/dependency!-- 阿里cola --dependencygroupIdcom.alibaba.cola/groupIdartifactIdcola-component-dto/artifactIdversion${ali.cola.version}/version/dependencydependencygroupIdorg.mapstruct/groupIdartifactIdmapstruct/artifactIdversion${org.mapstruct.version}/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/sourcetarget1.8/targetannotationProcessorPathspathgroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/pathpathgroupIdorg.mapstruct/groupIdartifactIdmapstruct-processor/artifactIdversion${org.mapstruct.version}/version/path/annotationProcessorPaths/configuration/plugin/plugins/build/project三、配置application.properties 1、配置application.properties 配置application.properties文件文件中包含数据库配置、knife4j配置 # 应用名称 spring.application.namespring-demo # 开发环境设置 spring.profiles.activedev # 应用路径 server.servlet.context-path/springboot # 编码字符集 server.servlet.encoding.charsetutf-8 # swagger knife4j.enabletrue knife4j.productionfalse knife4j.basic.enablefalse2、配置application-dev.properties 配置数据库 localhost数据库IP db_source数据库名称 username用户名 password密码 # 端口 server.port9900 spring.datasource.urljdbc:mysql://localhost:3306/db_source?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingutf8useSSLfalse spring.datasource.usernameusername spring.datasource.passwordpassword spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver# SSO zsc.open.token.checkfalse四、新建代码生成工具类 CodeGeneratorUtil package com.mitool.springboot.utils; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.InjectionConfig; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import lombok.extern.slf4j.Slf4j;import java.util.Arrays; import java.util.Scanner;/*** pTitle: CodeGeneratorUtil/p* pDescription:* 描述mybatis-plus 自动生成代码工具类* /p** author Jimmy.Shen* version v1.0.0* since 2022-10-19 9:58*/ Slf4j public class CodeGeneratorUtil {/*** 表前缀*/private static final String[] PREFIX new String[]{illp_, t_};/*** 是否生成controller、service、serviceImpl、converter*/private static final boolean ONLY_UPDATE_COLUMNS true;/*** 数据源配置*/private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG new DataSourceConfig.Builder(jdbc:mysql://10.10.177.151:3309/smart_park?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8nullCatalogMeansCurrenttrue,root, ztesoft);/*** 读取控制台内容*/public static String scanner(String tip) {Scanner scanner new Scanner(System.in);log.info(### 请输入 tip);if (scanner.hasNext()) {String ipt scanner.next();if (StrUtil.isNotEmpty(ipt)) {return ipt;}}throw new MybatisPlusException(请输入正确的 tip );}public static void main(String[] args) {String projectPath System.getProperty(user.dir);String outputDir projectPath /springboot/src/main/java/;String[] scannerArr scanner(作者名,包名,表名).split(,);String authorName scannerArr[0];String packageName scannerArr[1];String tableName scannerArr[2];// 规定代码路径如果代码在不同项目中可进行调整String controllerName projectPath /springboot/src/main/java/com/mitool/springboot/controller/ packageName;String serviceName projectPath /springboot/src/main/java/com/mitool/springboot/service/ packageName;String serviceImplName projectPath /springboot/src/main/java/com/mitool/springboot/service/ packageName /impl/;String entityName projectPath /springboot/src/main/java/com/mitool/springboot/entity/dataobject/ packageName;String mapperName projectPath /springboot/src/main/java/com/mitool/springboot/mapper/ packageName;String mapperXmlName projectPath /springboot/src/main/resources/mybatis-mapper/ packageName;String voName projectPath /springboot/src/main/java/com/mitool/springboot/entity/vo/ packageName;String converterName projectPath /springboot/src/main/java/com/mitool/springboot/converter/ packageName;FastAutoGenerator.create(DATA_SOURCE_CONFIG)// 全局配置.globalConfig(builder -//作者名builder.author(authorName)// 开启 swagger 模式 默认值:false.enableSwagger()// 禁止打开输出目录 默认值:true.disableOpenDir()// 指定输出目录.outputDir(outputDir)).packageConfig(builder - builder.moduleName(packageName)).injectionConfig(builder - {updateColumn(entityName, mapperName, mapperXmlName, voName, builder);if (ONLY_UPDATE_COLUMNS) {updateTemplate(controllerName, serviceName, serviceImplName, converterName, builder);}})//具体的生成文件的策略配置.strategyConfig(builder - {builder.addInclude(tableName.split(#))// .enableSkipView().addTablePrefix(Arrays.asList(PREFIX)).entityBuilder().enableFileOverride().enableLombok()// // controller.controllerBuilder().enableRestStyle().formatFileName(%sController).enableFileOverride()// service.serviceBuilder().superServiceClass(IService.class).formatServiceFileName(%sService).formatServiceImplFileName(%sServiceImpl).enableFileOverride()//开启生成mapper.mapperBuilder().enableBaseResultMap().enableBaseColumnList().superClass(BaseMapper.class).formatMapperFileName(%sMapper).formatXmlFileName(%sXml).enableFileOverride();})//模板配置如果你没有自定义的一些模板配置这里直接使用默认即可。.templateConfig(config - config.entity(/templates/entity.java))//模板引擎配置.templateEngine(new FreemarkerTemplateEngine()).execute();// 删除生成的自带的 baomidou代码FileUtil.del(projectPath /springboot/src/main/java/com/baomidou);}private static void updateColumn(String entityName, String mapperName, String mapperXmlName, String voName, InjectionConfig.Builder builder) {builder.customFile(consumer - consumer.fileName(DO.java).filePath(entityName).enableFileOverride().templatePath(/templates/entity.java.ftl));builder.customFile(consumer - consumer.fileName(Mapper.java).filePath(mapperName).enableFileOverride().templatePath(/templates/mapper.java.ftl));builder.customFile(consumer - consumer.fileName(Mapper.xml).filePath(mapperXmlName).enableFileOverride().templatePath(/templates/mapper.xml.ftl));builder.customFile(consumer - consumer.fileName(VO.java).filePath(voName).enableFileOverride().templatePath(/templates/vo.java.ftl));}private static void updateTemplate(String controllerName,String serviceName, String serviceImplName,String converterName, InjectionConfig.Builder builder) {builder.customFile(consumer - consumer.fileName(Controller.java).filePath(controllerName).enableFileOverride().templatePath(/templates/controller.java.ftl));builder.customFile(consumer - consumer.fileName(Service.java).filePath(serviceName).enableFileOverride().templatePath(/templates/service.java.ftl));builder.customFile(consumer - consumer.fileName(ServiceImpl.java).filePath(serviceImplName).enableFileOverride().templatePath(/templates/serviceImpl.java.ftl));builder.customFile(consumer - consumer.fileName(AppConverter.java).filePath(converterName).enableFileOverride().templatePath(/templates/converter.java.ftl));}}五、模板FreemarkerTemplate 模板文件放在resource/templates下 1、controller.java.ftl package com.mitool.springboot.controller.${package.ModuleName};import com.mitool.springboot.utils.PageUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import com.mitool.springboot.service.${package.ModuleName}.${table.serviceName}; import com.mitool.springboot.entity.dataobject.${package.ModuleName}.${entity}DO; import com.mitool.springboot.entity.vo.${package.ModuleName}.${entity}VO; import com.mitool.springboot.converter.${package.ModuleName}.${entity}AppConverter; import com.alibaba.cola.dto.SingleResponse; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; #if superControllerClassPackage??import ${superControllerClassPackage}; /#if import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource; import java.util.List; /** * p * ${table.comment!} 前端控制器 * /p * * author ${author} * since ${date} */ Slf4j RestController RequestMapping(/api/#if controllerMappingHyphenStyle${controllerMappingHyphen}#else${table.entityPath}/#if) Api(value ${table.comment!}, tags ${table.comment!} 管理模块) #if superControllerClass??public class ${table.controllerName} extends ${superControllerClass} { #else public class ${table.controllerName} { /#ifResourceprivate ${table.serviceName} service;Resourceprivate ${entity}AppConverter converter;ApiOperation(value ${table.comment!}分页查询, notes ${table.comment!}分页查询)GetMapping(/page)public SingleResponse? page(RequestParam Integer pageIndex, RequestParam Integer pageSize) {PageHelper.startPage(pageIndex, pageSize);List${entity}DO list service.list();return SingleResponse.of(PageUtil.pageInfoCopy(new PageInfo(list), ${entity}VO.class, converter::toValueObject));}ApiOperation(value ${table.comment!}列表查询, notes ${table.comment!}列表查询)GetMapping(/list)public SingleResponse? list() {List${entity}DO list service.list();return SingleResponse.of(converter.toValueObject(list));}ApiOperation(value ${table.comment!}详情, notes ${table.comment!}详情)GetMapping(/detail)public SingleResponse? detail(RequestParam Integer id) {return SingleResponse.of(converter.toValueObject(service.getById(id)));}ApiOperation(新增)PostMapping(/save)public SingleResponse? save(RequestBody ${entity}VO param) {${entity}DO dataObject converter.toDataObject(param);service.save(dataObject);return SingleResponse.buildSuccess();}ApiOperation(更新)PostMapping(/update)public SingleResponse? update(RequestBody ${entity}VO param) {${entity}DO dataObject converter.toDataObject(param);service.updateById(dataObject);return SingleResponse.buildSuccess();}ApiOperation(删除)PostMapping(/remove)public SingleResponse? remove(RequestBody ${entity}VO param) {service.removeById(param.getId());return SingleResponse.buildSuccess();} } 2、converter.java.ftl package com.mitool.springboot.converter.${package.ModuleName};import com.mitool.springboot.entity.dataobject.${package.ModuleName}.${entity}DO; import com.mitool.springboot.entity.vo.${package.ModuleName}.${entity}VO;import org.mapstruct.Mapper;import java.util.List;/*** p* ${table.comment!} app 模型转换服务* /p** author ${author}* since ${date}*/ Mapper(componentModel spring) public interface ${entity}AppConverter {${entity}DO toDataObject(${entity}VO ${entity?uncap_first}VO);List${entity}DO toDataObject(List${entity}VO ${entity?uncap_first}VOList);${entity}VO toValueObject(${entity}DO ${entity?uncap_first}DO);List${entity}VO toValueObject(List${entity}DO ${entity?uncap_first}DOList); }3、entity.java.ftl package com.mitool.springboot.entity.dataobject.${package.ModuleName};import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data;import java.io.Serializable; import java.time.LocalDateTime;/** * p* Title:${entity}* /p* p* Description:描述${table.comment} 对象* /p** author ${author}* version 1.0.0* since ${date} **/ Data TableName(${table.name}) public class ${entity}DO implements Serializable {private static final long serialVersionUID 1L; #-- ---------- BEGIN 字段循环遍历 ---------- #list table.fields as field/*** ${field.comment}*/#if field.keyFlag#assign keyPropertyName${field.propertyName}/TableId(value ${field.name}, type IdType.AUTO)/#ifprivate ${field.propertyType} ${field.propertyName}; /#list #------------ END 字段循环遍历 ---------- }4、mapper.java.ftl package com.mitool.springboot.mapper.${package.ModuleName};import com.mitool.springboot.entity.dataobject.${package.ModuleName}.${entity}DO; import ${superMapperClassPackage}; #if mapperAnnotationClass??import ${mapperAnnotationClass.name}; /#if import org.apache.ibatis.annotations.Mapper;/** * p* ${table.comment!} Mapper 接口* /p** author ${author}* since ${date}*/ #if mapperAnnotationClass?? ${mapperAnnotationClass.simpleName} /#if #if kotlin interface ${table.mapperName} : ${superMapperClass}${entity}DO #else Mapper public interface ${table.mapperName} extends ${superMapperClass}${entity}DO {} /#if 5、mapper.xml.ftl ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mitool.springboot.mapper.${package.ModuleName}.${table.mapperName}#if enableCache!-- 开启二级缓存 --cache type${cacheClassName}//#if!-- 通用查询映射结果 --resultMap idBaseResultMaptypecom.mitool.springboot.entity.dataobject.${package.ModuleName}.${entity}DO#list table.fields as field#if field.keyFlag#--生成主键排在第一位--id column${field.name} property${field.propertyName}//#if/#list#list table.commonFields as field#--生成公共字段 --result column${field.name} property${field.propertyName}//#list#list table.fields as field#if !field.keyFlag#--生成普通字段 --result column${field.name} property${field.propertyName} / /#if /#list/resultMap#if baseColumnList!-- 通用查询结果列 --sql idBase_Column_List #list table.commonFields as field${field.columnName}, /#list${table.fieldNames}/sql/#if /mapper 6、service.java.ftl package com.mitool.springboot.service.${package.ModuleName};import ${superServiceClassPackage}; import com.mitool.springboot.entity.dataobject.${package.ModuleName}.${entity}DO;/** * p* ${table.comment!} 服务类* /p * * author ${author} * since ${date} */ #if kotlin interface ${table.serviceName} : ${superServiceClass}${entity}DO #else public interface ${table.serviceName} extends ${superServiceClass}${entity}DO {} /#if 7、serviceImpl.java.ftl package com.mitool.springboot.service.${package.ModuleName}.impl;import com.mitool.springboot.mapper.${package.ModuleName}.${table.mapperName}; import com.mitool.springboot.service.${package.ModuleName}.${table.serviceName}; import com.mitool.springboot.entity.dataobject.${package.ModuleName}.${entity}DO; import ${superServiceImplClassPackage}; import org.springframework.stereotype.Service;/** * p* ${table.comment!} 服务实现类* /p * * author ${author} * since ${date}*/ Service #if kotlin open class ${table.serviceImplName} : ${superServiceImplClass}${table.mapperName}, ${entity}DO(), ${table.serviceName} {} #else public class ${table.serviceImplName} extends ${superServiceImplClass}${table.mapperName}, ${entity}DO implements ${table.serviceName} {} /#if 8、vo.java.ftl package com.mitool.springboot.entity.vo.${package.ModuleName};#list table.importPackages as pkg#if pkg?contains(baomidou)#elseif pkg?contains(Serializable)#else import ${pkg};/#if /#list import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty;/*** p* ${table.comment!} 请求模型* /p** author ${author}* since ${date}*/ ApiModel(value${entity}对象, description${table.comment!}) Data public class ${entity}VO {#-- ---------- BEGIN 字段循环遍历 ---------- #list table.fields as field#if field.name ! is_delete#if field.keyFlag#assign keyPropertyName${field.propertyName}//#if#if field.comment!?length gt 0/*** ${field.comment}*/ApiModelProperty(value ${field.comment})/#ifprivate ${field.propertyType} ${field.propertyName};/#if /#list #------------ END 字段循环遍历 ---------- } 六、用到的其他类 PageUtil 使用到了分页的工具类,放在utils目录下 package com.mitool.springboot.utils;import com.github.pagehelper.PageInfo;import java.util.List; import java.util.function.Function; import java.util.stream.Collectors;/*** 分页工具类** author Jimmy.Shen* since 2021/11/26*/ public class PageUtil {/*** 通用pageInfo转换** param sourcePageInfo 源数据* param targetClass 目标类型* param mapper list转换方法* param T 目标类型* param S 源类型*/public static T, S PageInfoT pageInfoCopy(PageInfoS sourcePageInfo, ClassT targetClass, FunctionS, T mapper) {PageInfoT respPageInfo new PageInfo();respPageInfo.setPageNum(sourcePageInfo.getPageNum());respPageInfo.setPageSize(sourcePageInfo.getPageSize());respPageInfo.setSize(sourcePageInfo.getSize());respPageInfo.setStartRow(sourcePageInfo.getStartRow());respPageInfo.setEndRow(sourcePageInfo.getEndRow());respPageInfo.setPages(sourcePageInfo.getPages());respPageInfo.setPrePage(sourcePageInfo.getPrePage());respPageInfo.setNextPage(sourcePageInfo.getNextPage());respPageInfo.setIsFirstPage(sourcePageInfo.isIsFirstPage());respPageInfo.setIsLastPage(sourcePageInfo.isIsLastPage());respPageInfo.setHasPreviousPage(sourcePageInfo.isHasPreviousPage());respPageInfo.setHasNextPage(sourcePageInfo.isHasNextPage());respPageInfo.setNavigatePages(sourcePageInfo.getNavigatePages());respPageInfo.setNavigatepageNums(sourcePageInfo.getNavigatepageNums());respPageInfo.setNavigateFirstPage(sourcePageInfo.getNavigateFirstPage());respPageInfo.setNavigateLastPage(sourcePageInfo.getNavigateLastPage());respPageInfo.setTotal(sourcePageInfo.getTotal());ListT pageList sourcePageInfo.getList().stream().map(mapper).collect(Collectors.toList());respPageInfo.setList(pageList);return respPageInfo;} } 七、运行 CodeGeneratorUtil main方法 输入作者、包、表名生成文件启动项目后可生成代码 生成的项目架构 使用swagger查看
http://www.dnsts.com.cn/news/205613.html

相关文章:

  • 宁波个人网站建设网站建设费要交印花税吗
  • 网站营销与推广方案专业软文代写
  • 毕节网站建设兼职做网站容易还是编程容易
  • 网站首页制作教程做网站赚钱还是企业宣传片
  • 沈阳个人做网站创建网站选哪家好
  • 漂亮网站唯品会一家做特卖的网站 分析
  • 河源建网站wordpress divi
  • 教你做网站儿童 html网站模板
  • 高台网站建设动力无限做网站
  • 惠州 家具 网站上线wordpress段落
  • 一流的网站建设哪家好wordpress轮播框
  • wordpress主题 外贸网站模板广州天河
  • 建建建设网站公司网站怎么搜索关键词
  • 深圳好的外贸网站建设网站怎么推广和应用
  • pc 移动端网站建设知名公司网址
  • 响应式手机网站怎么做网站备案号怎么做超链接
  • 石家庄网站建设高端百度网站收录提交入口全攻略
  • 聊城高端网站建设wordpress删除文章数据
  • 网站建设公司 壹宇网络国外网站做淘宝客
  • 深圳市建设银行网站首页用凡科做的手机网站版
  • 九龙坡网站建设网站图片优化
  • 企业网站排名运营网页设计与网站建设题库
  • 怎么建设课题网站帝国网站源码手机
  • 小说网站怎么做不违法论坛源码哪个好
  • 小精灵网站在线做语文第三方系统判断wordpress登录用户
  • 网站内页收录突然没了蛋糕 网站 模板
  • 巩义推广网站哪家好网站横幅代码
  • 表格在网站后台是居中可到前台为什么不居中手机表格制作app
  • 网站建设的实验结论seo案例模板
  • 凤岗镇仿做网站一站式服务平台入口