网站默认网站名信息科技公司名字
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:30
当前位置: 首页 > news >正文
网站默认网站名,信息科技公司名字,自做购物网站多少钱,如何面试网站开发这里简单记录写学习鱼皮sqlfather项目的笔记#xff0c;以供以后学习。
运行
将前后端项目clone到本地后#xff0c;修改对应配置文件运行项目。
后端
1.配置好mysql后运行这个sql文件建立对应的表。 2.修改数据库密码 3.修改完后运行启动类即可 4. 启动结果 5.查看A…这里简单记录写学习鱼皮sqlfather项目的笔记以供以后学习。
运行
将前后端项目clone到本地后修改对应配置文件运行项目。
后端
1.配置好mysql后运行这个sql文件建立对应的表。 2.修改数据库密码 3.修改完后运行启动类即可 4. 启动结果 5.查看API接口浏览器输入http://localhost:8102/api/doc.html
前端
前段代码不需要做修改将代码下载到本地后在终端窗口输入命令
// 安装依赖
yarn install // 如果提示没有yarn先npm下载一下
// 运行程序
npm run dev 运行效果
代码
代码结构 代码结构如上图所示其中core文件夹主要用于成sql数据。
builder生成sql语句JSON数据java代码前段代码 generator:生成模拟数据固定值随机值自增值根据正则表达式生成等model实体schema构造表时的统一规范utils 随机数生成 工具可以生成姓名、邮箱、城市、IP、URL、日期、时间戳、手机号等数据。
代码解析
生成表
这里以生成student表为例
前段发送请求 http://localhost:8102/api/sql/generate/schema映射到后端/sql/generate/schema方法 这里为了方便生成将前段定义的数据统一转化为了TableShema类型包括库名、表名、字段名等信息。
package com.yupi.sqlfather.core.schema;import java.util.List;
import lombok.Data;/*** 表概要** author https://github.com/liyupi*/
Data
public class TableSchema {/*** 库名/private String dbName;/** 表名/private String tableName;/** 表注释/private String tableComment;/** 模拟数据条数/private Integer mockNum;/** 列信息列表/private ListField fieldList;/** 列信息/Datapublic static class Field {/** 字段名/private String fieldName;/** 字段类型/private String fieldType;/** 默认值/private String defaultValue;/** 是否非空/private boolean notNull;/** 注释字段中文名/private String comment;/** 是否为主键/private boolean primaryKey;/** 是否自增/private boolean autoIncrement;/** 模拟类型随机、图片、规则、词库/private String mockType;/** 模拟参数/private String mockParams;/** 附加条件/private String onUpdate;}}
然后会进入GeneratorFacade类中的generateAll()方法来生成所需数据 这里首先会进行信息校验然后会生成模拟数据、插入的sql数据、json数据等信息。 2.1 DataBuilder.generateDate()方法生成模拟数据 该方法用于生成模拟数据返回一个ListMapString, Object集合 这里会对字段列表(fieldList)进行遍历根据对应的模拟数据类型生成对应数据。
先会先获取对应字段的模拟类型这里以姓名字段为例模拟数据类型为随机生成。通过调用DataGeneratorFactory.getGenerator()方法获取对应的枚举类型这里采用了饿汉模式首先构建多种DataGenerator对象再根据请求的枚举类型返回对应的结果。
package com.yupi.sqlfather.core.generator;import com.yupi.sqlfather.core.model.enums.MockTypeEnum;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;/** 数据生成器工厂* 工厂 单例模式降低开销** author https://github.com/liyupi*/
public class DataGeneratorFactory {/*** 模拟类型 生成器映射/private static final MapMockTypeEnum, DataGenerator mockTypeDataGeneratorMap new HashMapMockTypeEnum, DataGenerator() {{put(MockTypeEnum.NONE, new DefaultDataGenerator());put(MockTypeEnum.FIXED, new FixedDataGenerator());put(MockTypeEnum.RANDOM, new RandomDataGenerator());put(MockTypeEnum.RULE, new RuleDataGenerator());put(MockTypeEnum.DICT, new DictDataGenerator());put(MockTypeEnum.INCREASE, new IncreaseDataGenerator());}};private DataGeneratorFactory() {}/** 获取实例** param mockTypeEnum* return/public static DataGenerator getGenerator(MockTypeEnum mockTypeEnum) {mockTypeEnum Optional.ofNullable(mockTypeEnum).orElse(MockTypeEnum.NONE);return mockTypeDataGeneratorMap.get(mockTypeEnum);}
}然后会调用dataGenerator.doGenerate()方法来生成模拟数据 这里的FakerUtils为生成模拟数据的工具类
package com.yupi.sqlfather.core.utils;import com.yupi.sqlfather.core.model.enums.MockParamsRandomTypeEnum;
import java.sql.Timestamp;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import net.datafaker.Faker;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;/** 随机数生成工具** author https://github.com/liyupi*/
public class FakerUtils {private final static Faker ZH_FAKER new Faker(new Locale(zh-CN));private final static Faker EN_FAKER new Faker();private final static DateTimeFormatter DATE_TIME_FORMATTER DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss);/*** 获取随机值** param randomTypeEnum* return/public static String getRandomValue(MockParamsRandomTypeEnum randomTypeEnum) {String defaultValue RandomStringUtils.randomAlphanumeric(2, 6);if (randomTypeEnum null) {return defaultValue;}switch (randomTypeEnum) {case NAME:return ZH_FAKER.name().name();case CITY:return ZH_FAKER.address().city();case EMAIL:return EN_FAKER.internet().emailAddress();case URL:return EN_FAKER.internet().url();case IP:return ZH_FAKER.internet().ipV4Address();case INTEGER:return String.valueOf(ZH_FAKER.number().randomNumber());case DECIMAL:return String.valueOf(RandomUtils.nextFloat(0, 100000));case UNIVERSITY:return ZH_FAKER.university().name();case DATE:return EN_FAKER.date().between(Timestamp.valueOf(2022-01-01 00:00:00), Timestamp.valueOf(2023-01-01 00:00:00)).toLocalDateTime().format(DATE_TIME_FORMATTER);case TIMESTAMP:return String.valueOf(EN_FAKER.date().between(Timestamp.valueOf(2022-01-01 00:00:00), Timestamp.valueOf(2023-01-01 00:00:00)).getTime());case PHONE:return ZH_FAKER.phoneNumber().cellPhone();default:return defaultValue;}}public static void main(String[] args) {getRandomValue(null);}}
最终generateData方法得到的数据为 2.2 生成插入SQL
通过buildInsertSql()生成对应sql语句 生成结果 2.3 生成JSON数据 2.4 生成java实体对象代码 生成结果
import lombok.Data;/** Student/
Data
public class Student implements Serializable {private static final long serialVersionUID 1L;/** 主键/private Long id;/** 用户名/private String name;/** 性别/private Integer sex;/** 用户名/private Integer age;/** 创建时间/private Date createTime;/** 更新时间/private Date updateTime;/** 是否删除(0-未删, 1-已删)/private Integer isDeleted;}
java_entity.ftl模板 这里用到了FreeMarker template详细信息可以看鱼皮大佬的介绍https://www.codefather.cn/post/1732359794150469634 2.5 生成java对象代码 生成结果 Student student new Student(); student.setName(“陈文轩”); student.setSex(0); student.setAge(5); 2.6 生成ts代码
/** Student*/
interface Student {// 主键id: number;// 用户名name: string;// 性别sex: number;// 用户名age: number;// 创建时间createTime: Date;// 更新时间updateTime: Date;// 是否删除(0-未删, 1-已删)isDeleted: number;
}最后将所有生成的结果放到generateVO对象后返回给前端。
- 上一篇: 网站模块源码模板网站为什么做不了优化
- 下一篇: 网站目录 index.html微平台图片
