sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

java实现的开源mocker造数神器,10分钟可完成千万级别数据的造数-入门篇


如果你还在为数据库表造数烦恼?如果你还在造数上花费一天、一周、甚至更多的时间……也许Mocker(模客)能帮你排忧解难。

造数是一件令人头疼、繁琐而又无趣的事情,但有些时候它又是开发过程中不可避免的一个阶段。

我们常用的造数方法

  1. 少量数据也许可以通过人工手动一行一行造
  2. 稍微多一点要做个excel工具进行数据模拟并导入
  3. 数据量再大一点可能就得写脚本(如python等)来造数

以上这些方式一般来说都需要一定的时间成本投入,为了杜绝这种不必要的开发时间成本浪费,Mocker因此而生。

Mocker本着你写逻辑我造数原则服务于你的造数需求,百万级别数据量造数不再需要一天、一周甚至更多的时间,Mocker只需要10分钟甚至更少。

 

待模拟数据表结构

CREATE TABLE `mk_user` (
`id` bigint(18) NOT NULL AUTO_INCREMENT COMMENT '主键自增长',
`user_name` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '账户名称',
`password` varchar(55) DEFAULT NULL COMMENT '账户密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

 

引入maven依赖

<dependency>
<groupId>io.gitee.jaemon</groupId>
<artifactId>mocker</artifactId>
<version>1.1.0</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

 

Mocker配置文件

# 数据库配置
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mockdb?useUnicode=true&characterEncoding=utf-8&useSSL=false
username=root
password=root
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Mocker配置文件路径: resources/mocker.properties

 

执行字段值生成处理类生成程序

public class MockerApp {

public static void main(String[] args) {
// 生成表字段值生成处理类
DataMockStarter.generate("/home/jaemon/mocker");
}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

运行程序,在/home/jaemon/mocker路径下会生成 MockdbColumnHandlerEnum枚举类文件,文件内容如下

public enum MockdbColumnHandlerEnum implements TableColumnsHandler {

// mk_user-账户名称-varchar(55)
USER_NAME {
@Override
public String generate(String tableName, Map<String, Object> values) {
return null;
}
},

// mk_user-账户密码-varchar(55)
PASSWORD {
@Override
public String generate(String tableName, Map<String, Object> values) {
return null;
}
};

MockdbColumnHandlerEnum() {}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

编写MockdbColumnHandlerEnum枚举类字段值生成逻辑

public enum MockdbColumnHandlerEnum implements TableColumnsHandler {

// mk_user-账户名称-varchar(55)
USER_NAME {
@Override
public String generate(String tableName, Map<String, Object> values) {
return RandomUtils.randomCNName();
}
},

// mk_user-账户密码-varchar(55)
PASSWORD {
@Override
public String generate(String tableName, Map<String, Object> values) {
return RandomUtils.generateCharNums(8);
}
};

MockdbColumnHandlerEnum() {}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

 

执行数据模拟程序

public class MockerApp {

public static void main(String[] args) {
// 模拟数据库表数据生成
DataMockStarter.mock(MockdbColumnHandlerEnum.class);
}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

 

源码地址

 ​Mocker Gitee​


原文链接:https://blog.51cto.com/u_15891990/5908808
posted on   sunny123456  阅读(109)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-09-03 Insomnia的下载
2022-09-03 Spring Boot 全局异常处理@ControllerAdvice
2022-09-03 com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 报错问题
2022-09-03 SpringBoot启动时报错:The bean 'dataSource', defined in BeanDefinition defined in class path resource
2022-09-03 @ControllerAdvice全局异常处理
2022-09-03 spring cloud 多模块打包部署解决坑
2022-09-03 引入版本问题 spring-cloud版本:Finchley.RC1 和 spring-boot版本:2.0.4.RELEASE Non-resolvable import POM: Failure to find org.springframework.cloud:spring-cloud-dependencies
点击右上角即可分享
微信分享提示