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

电子商务网站建设应用技术彩票网站制作

电子商务网站建设应用技术,彩票网站制作,wordpress5 升级,网站服务器速度对seo有什么影响?😜作 者:是江迪呀✒️本文关键词:SpringBoot项目模版、企业级、模版☀️每日 一言:我们之所以这样认为,是因为他们这样说。他们之所以那样说,是因为他们想让我们那样认为。所以实践才是检验真理…
  • 😜           :是江迪呀
  • ✒️本文关键词SpringBoot项目模版企业级模版
  • ☀️每日   一言我们之所以这样认为,是因为他们这样说。他们之所以那样说,是因为他们想让我们那样认为。所以实践才是检验真理的唯一准则。

文章目录

  • 一、使用Velocity模版自动生成代码
  • 二、自定义vm模版
    • 2.1 MyController.java.vm
    • 2.2 MyEntity.java.vm 实体类
    • 2.3 MyMapper.java.vm mapper接口
    • 2.4 MyMapper.xml.vm mapper.xml
    • 2.5 MyService.java.vm 服务层
    • 2.6 MyServiceImpl.java.vm 服务实现类
  • 三、测试

上回我们说了一些开发规范,其实现在你就可以开始写代码了。但是呢效率会很慢,实体类、mapperservice等等这些你都要手动创建,这样效率太低了,遇到一个表中有几十个字段的情况,你可以一上午都在写实体类,而且还不能保证准确性,所以我们需要一个工具替我们生成。

一、使用Velocity模版自动生成代码

我们以生成t_user表为例,表结构如下:

在这里插入图片描述

Generator代码:

package com.shijiangdiya.common;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ClassPathResource;import java.util.*;public class Generator {/*** 生成的代码的顶层包名*/private static final String SERVICE_NAME = "code";/*** 最终包路径*/private static final StringBuilder FINAL_PATH = new StringBuilder();/*** 表名前缀*/private static String tablePrefix = "t_";/*** <p>* 读取控制台内容* </p>*/public static String scanner(String tip) {Scanner scanner = new Scanner(System.in);StringBuilder help = new StringBuilder();help.append("请输入" + tip + ":");System.out.println(help);if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotEmpty(ipt)) {return ipt;}}throw new MybatisPlusException("请输入正确的" + tip + "!");}/*** 代码生成器*/public static void main(String[] args) {// 目标数据表名String[] tableName = scanner("表名,多个英文逗号分割").split(",");generateByTables(tableName);}private static void generateByTables(String... tableNames) {AutoGenerator mpg = new AutoGenerator();mpg.setTemplateEngine(new VelocityTemplateEngine());// 全局配置GlobalConfig gc = globalGenerate();// 包配置PackageConfig pc = packageGenerate();// 数据库配置DataSourceConfig dsc = dataSourceGenerate();// 自定义模板TemplateConfig tc = templateGenerate();// 策略配置StrategyConfig strategy = strategyGenerate(tableNames);mpg.setGlobalConfig(gc);mpg.setDataSource(dsc);mpg.setPackageInfo(pc);mpg.setTemplate(tc);mpg.setStrategy(strategy);mpg.execute();}/*** 数据库配置** @return 数据源*/private static DataSourceConfig dataSourceGenerate() {YamlPropertiesFactoryBean yamlMapFactoryBean = new YamlPropertiesFactoryBean();yamlMapFactoryBean.setResources(new ClassPathResource("application.yml"));//获取yml里的参数Properties properties = yamlMapFactoryBean.getObject();String url = properties.getProperty("spring.datasource.url");String driver = properties.getProperty("spring.datasource.driver-class-name");String username = properties.getProperty("spring.datasource.username");String password = properties.getProperty("spring.datasource.password");// 数据库配置DataSourceConfig dsc = new DataSourceConfig();//数据类型dsc.setDbType(DbType.MYSQL);dsc.setUrl(url);dsc.setDriverName(driver);dsc.setUsername(username);dsc.setPassword(password);return dsc;}/*** 全局配置** @return 全局配置*/private static GlobalConfig globalGenerate() {// 全局配置GlobalConfig gc = new GlobalConfig();//是否覆盖文件gc.setFileOverride(true);// 获取顶层目录String projectPath = System.getProperty("user.dir");// 获取子项目目录String path = Generator.class.getClassLoader().getResource("").getPath();String levelPath = path.substring(0, path.indexOf("target") - 1);if (!projectPath.equals(levelPath)) {FINAL_PATH.append(levelPath);} else {FINAL_PATH.append(projectPath);}//输出路径gc.setOutputDir(FINAL_PATH + "/src/main/java");//作者名称gc.setAuthor("shijiangdiya");//生成后是否自动打开文件gc.setOpen(true);// XML 二级缓存gc.setEnableCache(false);//是否使用swagger2gc.setSwagger2(true);// 自定义文件命名,注意 %s 会自动填充表实体属性!gc.setControllerName("%sController");gc.setServiceName("%sService");gc.setServiceImplName("%sServiceImpl");gc.setMapperName("%sMapper");gc.setXmlName("%sMapper");//mapper.xml中生成基础resultMapgc.setBaseResultMap(true);//mapper.xml中生成基础columnListgc.setBaseColumnList(true);// 主键类型gc.setIdType(IdType.ID_WORKER);return gc;}/*** 策略配置* 主要的表字段映射** @param tableName 表名* @return 策略配置*/private static StrategyConfig strategyGenerate(String[] tableName) {// 策略配置StrategyConfig strategy = new StrategyConfig();//表名映射到实体策略,带下划线的转成 驼峰strategy.setNaming(NamingStrategy.underline_to_camel);//列名映射到类型属性策略,带下划线的转成驼峰strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 表名和字段名是否大小写strategy.setCapitalMode(false);//实体类使用lombokstrategy.setEntityLombokModel(true);//controller使用rest接口模式strategy.setRestControllerStyle(true);// 继承顶层controller 这里是strategy.setSuperControllerClass("com.shijiangdiya.config.AbstractController");//设置表名strategy.setInclude(tableName);//去掉前缀strategy.setTablePrefix(tablePrefix);strategy.setEntityBooleanColumnRemoveIsPrefix(true);// 驼峰转连字符strategy.setControllerMappingHyphenStyle(true);strategy.setEntityBuilderModel(true);return strategy;}/*** 自定义模板** @return 模板*/private static TemplateConfig templateGenerate() {// 设置自定义的模板TemplateConfig tc = new TemplateConfig();tc.setController("templates/MyController.java.vm").setEntity("templates/MyEntity.java.vm").setService("templates/MyService.java.vm").setServiceImpl("templates/MyServiceImpl.java.vm").setMapper("templates/MyMapper.java.vm").setXml("/templates/MyMapper.xml.vm");// 不要源码包内的mapperreturn tc;}/*** 包配置** @return 包配置*/private static PackageConfig packageGenerate() {// 包配置PackageConfig pc = new PackageConfig();pc.setModuleName(SERVICE_NAME);pc.setParent("com.shijiangdiya");pc.setEntity("entity");pc.setService("service");pc.setServiceImpl("service.impl");pc.setMapper("mapper");pc.setXml("mapper.xml");return pc;}
}

二、自定义vm模版

使用自定义模板你可以生成更加符合你业务场景的代码。

2.1 MyController.java.vm

在控制层中,提供了CRUD的方法,你可以自定义一些通用的东西,比如传入查询的QO、返回的DTO等。

package ${package.Controller};import ${package.Entity}.${entity};
import ${package.Service}.${table.serviceName};
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import com.shijiangdiya.config.Response;#if(${superControllerClassPackage})
import $!{superControllerClassPackage};
#end/*** <p>* $!{table.comment} 前端控制器* </p>** @author ${author}* @since ${date}*/
#set($entityName = ${entity.substring(0,1).toLowerCase()}+${entity.substring(1)})
@RestController
@RequestMapping(value = {"#if(${controllerMappingHyphenStyle})/api/${controllerMappingHyphen}#else /api/${table.entityPath}#end"},produces = MediaType.APPLICATION_JSON_VALUE)
@Api(value = "${table.controllerName}", description = "$!{table.comment}", produces = MediaType.APPLICATION_JSON_VALUE)
public class ${table.controllerName} extends ${superControllerClass} {@Autowiredprivate ${table.serviceName} ${entityName}Service;@ResponseBody@ApiOperation(value = "", notes = "")@GetMapping(value = "/")public Response select(){${entityName}Service.select();return returnSuccess();}@ResponseBody@ApiOperation(value = "", notes = "")@PostMapping(value = "")public Response add(){${entityName}Service.add();return returnSuccess();}@ResponseBody@ApiOperation(value = "", notes = "")@PutMapping(value = "/{id}")public Response update(@PathVariable Long id){${entityName}Service.modifyById();return returnSuccess();}@ApiOperation(value = "$!{table.comment}-删除", notes = "$!{table.comment}-删除")@DeleteMapping(value = "/{id}")public Response delete(@PathVariable Long id){${entityName}Service.deleteById(id);return returnSuccess();}}

2.2 MyEntity.java.vm 实体类

package ${package.Controller};import ${package.Entity}.${entity};
import ${package.Service}.${table.serviceName};
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import com.shijiangdiya.config.Response;#if(${superControllerClassPackage})
import $!{superControllerClassPackage};
#end/*** <p>* $!{table.comment} 前端控制器* </p>** @author ${author}* @since ${date}*/
#set($entityName = ${entity.substring(0,1).toLowerCase()}+${entity.substring(1)})
@RestController
@RequestMapping(value = {"#if(${controllerMappingHyphenStyle})/api/${controllerMappingHyphen}#else /api/${table.entityPath}#end"},produces = MediaType.APPLICATION_JSON_VALUE)
@Api(value = "${table.controllerName}", description = "$!{table.comment}", produces = MediaType.APPLICATION_JSON_VALUE)
public class ${table.controllerName} extends ${superControllerClass} {@Autowiredprivate ${table.serviceName} ${entityName}Service;@ResponseBody@ApiOperation(value = "", notes = "")@GetMapping(value = "/")public Response select(){${entityName}Service.select();return returnSuccess();}@ResponseBody@ApiOperation(value = "", notes = "")@PostMapping(value = "")public Response add(){${entityName}Service.add();return returnSuccess();}@ResponseBody@ApiOperation(value = "", notes = "")@PutMapping(value = "/{id}")public Response update(@PathVariable Long id){${entityName}Service.modifyById();return returnSuccess();}@ApiOperation(value = "$!{table.comment}-删除", notes = "$!{table.comment}-删除")@DeleteMapping(value = "/{id}")public Response delete(@PathVariable Long id){${entityName}Service.deleteById(id);return returnSuccess();}}

2.3 MyMapper.java.vm mapper接口

package ${package.Mapper};import ${package.Entity}.${entity};
import ${superMapperClassPackage};
import org.apache.ibatis.annotations.Mapper;/*** <p>* $!{table.comment} Mapper 接口* </p>** @author ${author}* @since ${date}*/
@Mapper
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {}

2.4 MyMapper.xml.vm mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">
</mapper>

2.5 MyService.java.vm 服务层

package ${package.Service};import ${package.Entity}.${entity};
import ${superServiceClassPackage};
import java.util.List;
/*** <p>* $!{table.comment} 服务类* </p>** @author ${author}* @since ${date}*/
#set($entityName = ${entity.substring(0,1).toLowerCase()}+${entity.substring(1)})
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {/*** 查询*/List select();/*** 修改*/void add();/*** 删除* @param id*/void deleteById(Long id);/*** 修改*/void modifyById();
}

2.6 MyServiceImpl.java.vm 服务实现类

package ${package.ServiceImpl};import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
import ${package.Service}.${table.serviceName};
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;
import java.util.List;/*** <p>* $!{table.comment} 服务实现类* </p>** @author ${author}* @since ${date}* @version ${cfg.version}*/
#set($entityName = ${entity.substring(0,1).toLowerCase()}+${entity.substring(1)})
@Service
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {@Overridepublic List select() {return null;}@Overridepublic void add() {}@Overridepublic void deleteById(Long id) {}@Overridepublic void modifyById() {}
}

三、测试

在这里插入图片描述
在这里插入图片描述

http://www.yayakq.cn/news/890536/

相关文章:

  • 做微商网站设计做网站文字居中代码
  • 辣条类网站建设规划书成都做网站设
  • 做网站 套用模板之后用什么改哪些网站是做婴童辅食招商的
  • 金沙洲网站建设工作室同城可以做别人一样的门户网站吗
  • 网站开发html php个人简历封面模板免费
  • 在线编程的网站做网站应该用什么配置的手提电脑
  • 万网阿里云域名查询淘宝seo是什么
  • 自媒体seo优化沈阳企业网站seo公司
  • 免费网站建设ppt模板WordPress获取主题慢
  • 海南平台网站建设平台免费广告推广
  • 济南网络营销服务公司说说seo论坛
  • 做网站是那个语言写的最近播放中文版在线观看电视剧
  • seo网站做推广的公司郑州社交网站开发
  • 如何做婚庆公司的网站flask wordpress
  • scratch少儿编程网站html 音乐网站
  • 网站的建设与维护需要资质吗甘德网站建设
  • 网站建设的元素网络广告代理渠道
  • 在哪个网站上做预收款报告网站ui设计报价单
  • 免费企业网站模板html餐馆效果图网站
  • 汕头网址模板建站wordpress网站示例
  • 深圳网站营销推广公司电话网站建设基本目标
  • 南昌做企业网站移动建站工具
  • 南京网站设计案例建立英文网站
  • 网站建设的内容有哪些好的设计教程网站
  • 广东网站建设加工长春网络建站
  • 微商城网站建设信息专做定制网站建设
  • 奕腾网站建设婚庆公司多少钱
  • 制作公司网站视频公司网站开发外包公司
  • 五常网站建设网站建设销售策划方案
  • 广州建网站的公司有哪些免费咨询英文