簡單易用的亂資料生成器。一般用於開發和測試階段的資料填充、模擬、模擬研究、演示等場景。可以整合到各種型別的java專案中使用。
<dependency>
<groupId>com.apifan.common</groupId>
<artifactId>common-random</artifactId>
<version>1.0.16</version>
</dependency>
//生成1個1~101(不含)之間的隨機整數
int a = NumberSource.getInstance().randomInt(1, 101);
//生成8個1~101(不含)之間的隨機整數
int[] b = NumberSource.getInstance().randomInt(1, 101, 8);
//生成1個10000000000~20000000001(不含)之間的隨機長整數
long c = NumberSource.getInstance().randomLong(10000000000L, 20000000001L);
//生成9個10000000000~20000000001(不含)之間的隨機長整數
long[] d = NumberSource.getInstance().randomLong(10000000000L, 20000000001L, 9);
//生成1個0.01~0.51(不含)之間的隨機整數
double e = NumberSource.getInstance().randomDouble(0.01D, 0.51D);
//生成8個0.01~0.51(不含)之間的隨機整數
double[] f = NumberSource.getInstance().randomDouble(0.01D, 0.51D, 8);
//生成隨機百分比
BigDecimal percent = NumberSource.getInstance().randomPercent();
//生成1個隨機漢字
String i = OtherSource.getInstance().randomChinese();
//生成4個隨機漢字
String j = OtherSource.getInstance().randomChinese(4);
String idiom = OtherSource.getInstance().randomChineseIdiom();
Poem p = OtherSource.getInstance().randomTangPoem();
//生成1個隨機中文人名(性別隨機)
String k = PersonInfoSource.getInstance().randomChineseName();
//生成1個隨機男性中文人名
String k2 = PersonInfoSource.getInstance().randomMaleChineseName();
//生成1個隨機女性中文人名
String k3 = PersonInfoSource.getInstance().randomFemaleChineseName();
//生成1個隨機英文人名
String l = PersonInfoSource.getInstance().randomEnglishName();
//姓名
String name = PersonInfoSource.getInstance().randomChineseName();
//頭像檔案儲存路徑
String targetPath = "/home/user/picture/" + name + ".png;
//使用預設的Dialog字型
PersonInfoSource.getInstance().generateNamePicture(name, targetPath);
//使用自定義的字型
String font = "/home/user/font/SourceHanSansCN-Normal.ttf";
PersonInfoSource.getInstance().generateNamePicture(name, targetPath, font);
//生成1個隨機的虛擬身份證號碼,地區為廣西壯族自治區,男性,出生日期在1990年11月11日至1999年12月12日之間
LocalDate beginDate = LocalDate.of(1990,11,11);
LocalDate endDate = LocalDate.of(1999,12,12);
String id1 = PersonInfoSource.getInstance().randomMaleIdCard("廣西壯族自治區", beginDate, endDate);
//生成1個隨機的虛擬身份證號碼,地區為河北省,女性,出生日期在2001年1月11日至2008年2月22日之間
LocalDate beginDate2 = LocalDate.of(2001,1,11);
LocalDate endDate2 = LocalDate.of(2008,2,22);
String id2 = PersonInfoSource.getInstance().randomFemaleIdCard("河北省", beginDate2, endDate2);
//生成1個隨機的虛擬身份證號碼,地區為廣西壯族自治區,男性,年齡為18歲
String id3 = PersonInfoSource.getInstance().randomMaleIdCard("廣西壯族自治區", 18);
//生成1個隨機的虛擬身份證號碼,地區為河北省,女性,年齡為19歲
String id4 = PersonInfoSource.getInstance().randomFemaleIdCard("河北省", 19);
注意:
//生成1個隨機虛擬VISA信用卡號碼
String cc1 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.Visa);
//生成1個隨機虛擬MasterCard信用卡號碼
String cc2 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.MasterCard);
//生成1個隨機虛擬American Express信用卡號碼
String cc3 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.Amex);
//生成1個隨機虛擬銀聯信用卡號碼
String cc4 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.UnionPay);
//生成1個隨機虛擬JCB信用卡號碼
String cc5 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.JCB);
//生成1個隨機虛擬借記卡(儲蓄卡)號碼
String dbc = PersonInfoSource.getInstance().randomDebitCardNo();
注意:
//生成1個隨機中國大陸手機號
String m = PersonInfoSource.getInstance().randomChineseMobile();
//生成1個隨機郵箱地址,字尾隨機,郵箱使用者名稱最大長度為10
String n1 = InternetSource.getInstance().randomEmail(10);
//生成1個隨機郵箱地址,字尾為163.com,郵箱使用者名稱最大長度為10
String n2 = InternetSource.getInstance().randomEmail(10, "163.com");
//生成1個隨機域名,域名最大長度為16
String dm = InternetSource.getInstance().randomDomain(16);
//生成1個隨機公網IPv4地址
String pub = InternetSource.getInstance().randomPublicIpv4();
//生成1個隨機私有(內網)IPv4地址
String prv = InternetSource.getInstance().randomPrivateIpv4();
//生成1個隨機ipv6地址
String ipv6 = InternetSource.getInstance().randomIpV6();
//生成1個隨機埠號
int port = InternetSource.getInstance().randomPort();
//生成1個隨機App名稱
String appName = InternetSource.getInstance().randomAppName();
//生成1個隨機App Bundle ID
String appBundleID = InternetSource.getInstance().randomAppBundleId();
//生成1個隨機App版本號
String appVersionCode = InternetSource.getInstance().randomAppVersionCode();
//生成1個隨機靜態url,字尾為jpg
String url = InternetSource.getInstance().randomStaticUrl("jpg");
//生成1個2020年的隨機日期,日期格式為yyyy-MM-dd
String d1 = DateTimeSource.getInstance().randomDate(2020, "yyyy-MM-dd");
//生成1個2020年1月2日之後的隨機日期,日期格式為yyyy-MM-dd
String d2 = DateTimeSource.getInstance().randomFutureDate(LocalDate.of(2020,1,2), "yyyy-MM-dd");
//生成1個今天(基於系統時間判斷)之後的隨機日期,日期格式為yyyy-MM-dd
String d3 = DateTimeSource.getInstance().randomFutureDate("yyyy-MM-dd");
//生成1個2020年1月2日之前1年內的隨機日期,日期格式為yyyy-MM-dd
String d4 = DateTimeSource.getInstance().randomPastDate(LocalDate.of(2020,1,2), "yyyy-MM-dd");
//生成1個今天(基於系統時間判斷)之前1年內的隨機日期,日期格式為yyyy-MM-dd
String d5 = DateTimeSource.getInstance().randomPastDate("yyyy-MM-dd");
//生成1個2020年1月2日之前10年內的隨機日期,日期格式為yyyy-MM-dd
String dd = DateTimeSource.getInstance().randomPastDate(LocalDate.of(2020,1,2), 3650, "yyyy-MM-dd");
//生成1個2000年1月11日至2010年2月22日範圍之間的隨機日期,日期格式為yyyy-MM-dd
LocalDate beginDate = LocalDate.of(2000,1,11);
LocalDate endDate = LocalDate.of(2010,2,22);
String d6 = DateTimeSource.getInstance().randomDate(beginDate, endDate, "yyyy-MM-dd");
//生成過去7天範圍內的隨機時間
LocalDateTime time1 = DateTimeSource.getInstance().randomPastTime(7);
//生成未來7天範圍內的隨機時間
LocalDateTime time2 = DateTimeSource.getInstance().randomFutureTime(7);
//生成2020年2月14日當天範圍內的隨機時間
LocalDateTime time3 = DateTimeSource.getInstance().randomTime(2020, 2, 14);
//生成過去100秒範圍內的隨機時間
LocalDateTime time4 = DateTimeSource.getInstance().randomPastTime(LocalDateTime.now(), 100);
//生成未來100秒範圍內的隨機時間
LocalDateTime time5 = DateTimeSource.getInstance().randomFutureTime(LocalDateTime.now(), 100);
//生成1個當天範圍內的隨機時間戳
long ts1 = DateTimeSource.getInstance().randomTimestamp(LocalDate.now());
//生成1個2020年3月6日範圍內的隨機時間戳
long ts2 = DateTimeSource.getInstance().randomTimestamp(LocalDate.of(2020, 3, 6));
//生成1個介於2020年3月6日12:00:00至2020年3月6日12:30:00之間的隨機時間戳
LocalDateTime begin = LocalDateTime.of(2020, 3, 6, 12, 0, 0);
LocalDateTime end = LocalDateTime.of(2020, 3, 6, 12, 30, 0);
long ts3 = DateTimeSource.getInstance().randomTimestamp(begin, end);
//生成1個2020年3月6日12:00:00之後180秒內的隨機時間戳
LocalDateTime base1 = LocalDateTime.of(2020, 3, 6, 12, 0, 0);
long ts4 = DateTimeSource.getInstance().randomFutureTimestamp(base1, 180);
//生成1個2020年3月7日13:00:00之前120秒內的隨機時間戳
LocalDateTime base2 = LocalDateTime.of(2020, 3, 7, 13, 0, 0);
long ts5 = DateTimeSource.getInstance().randomPastTimestamp(base2, 120);
//生成1個隨機時區名稱
String timezone = DateTimeSource.getInstance().randomTimezoneName();
//生成1個隨機強密碼,長度為16,無特殊字元
String pwd1 = PersonInfoSource.getInstance().randomStrongPassword(16, false);
//生成1個隨機強密碼,長度為16,有特殊字元
String pwd2 = PersonInfoSource.getInstance().randomStrongPassword(16, true);
//隨機獲取省份
String prv = AreaSource.getInstance().randomProvince();
//隨機獲取城市(省份+城市,以逗號為分隔符)
String city = AreaSource.getInstance().randomCity(",");
//隨機獲取郵編
String zipCode = AreaSource.getInstance().randomZipCode();
//生成1個隨機中國大陸詳細地址
String addr = AreaSource.getInstance().randomAddress();
//隨機獲取1個編碼首字母為b的國家或地區
CountryOrRegionCode code0 = AreaSource.getInstance().randomCountryOrRegionCode("b");
//隨機獲取1個國家或地區(不限首字母)
CountryOrRegionCode code1 = AreaSource.getInstance().randomCountryOrRegionCode();
//隨機生成1個緯度
double lat = AreaSource.getInstance().randomLatitude();
//隨機生成1個經度
double lng = AreaSource.getInstance().randomLongitude();
//隨機固話區號(省級行政區名稱不需要包含字尾)
String phoneCode = AreaSource.getInstance().randomPhoneCode("湖南");
//隨機固話號碼(使用-作為分隔符,預設的分隔符是空格)
String phoneNumber = AreaSource.getInstance().randomPhoneNumber("廣東", "-");
//生成1個隨機中國大陸車牌號(新能源車型)
String n1 = OtherSource.getInstance().randomPlateNumber(true);
//生成1個隨機中國大陸車牌號(非新能源車型)
String n2 = OtherSource.getInstance().randomPlateNumber();
//生成1個隨機英文網路暱稱,最大長度為8個字元
String nickName = PersonInfoSource.getInstance().randomNickName(8);
//生成1個隨機漢字網路暱稱,最大長度為8個漢字
String nickName2 = PersonInfoSource.getInstance().randomChineseNickName(8);
//基於隨機漢字網路暱稱生成1個拼音網路暱稱,最大長度為4個漢字
String nickName3 = PersonInfoSource.getInstance().randomPinyinNickName(4);
//生成1個隨機QQ號
String qq = PersonInfoSource.getInstance().randomQQAccount();
//生成1個隨機非主流QQ網名
String nickName = PersonInfoSource.getInstance().randomQQNickName();
String ethnicName = OtherSource.getInstance().randomEthnicName();
//隨機獲取學歷
String degree = EducationSource.getInstance().randomDegree();
//隨機獲取本科高校名稱
String college = EducationSource.getInstance().randomCollege();
//隨機高校專業名稱
String majorName = EducationSource.getInstance().randomMajorName();
//隨機獲取小學名稱
String primarySchoolName = EducationSource.getInstance().randomPrimarySchoolName();
//隨機獲取小學年級
String primarySchoolGrade = EducationSource.getInstance().randomPrimarySchoolGrade();
//隨機獲取中學名稱
String highSchoolName = EducationSource.getInstance().randomHighSchoolName();
//隨機獲取中學年級
String highSchoolGrade = EducationSource.getInstance().randomHighSchoolGrade();
//隨機班級名稱
String className = EducationSource.getInstance().randomClassName();
//隨機生成1個公司名稱,地區字首為北京
String companyName = OtherSource.getInstance().randomCompanyName("北京");
//隨機生成1個公司部門名稱
String department = OtherSource.getInstance().randomCompanyDepartment();
//隨機生成1條中文短句
String sentence = OtherSource.getInstance().randomChineseSentence();
//隨機生成1條英文文字,包含10個單詞
String text = OtherSource.getInstance().randomEnglishText(10);
String title = OtherSource.getInstance().randomNonsenseTitle("星期一", "下雨");
String content = OtherSource.getInstance().randomNonsense("星期一", "下雨");
OtherSource.getInstance().randomEconomicCategory();
說明:行業分類編碼和名稱來自國家統計局釋出的公開資料
OtherSource.getInstance().randomSocialCreditCode();
//隨機ISBN,返回結果需要分隔符-,格式例如:978-7-XXXX-XXXX-X
String isbn1 = OtherSource.getInstance().randomISBN(true);
//隨機ISBN,返回結果不需要分隔符,格式例如:9787XXXXXXXXX
String isbn2 = OtherSource.getInstance().randomISBN(false);
//隨機國際商品編碼,格式例如:691XXXXXXXXXX
String ean = OtherSource.getInstance().randomEAN();
說明:
//隨機生成1個PC User-Agent
String ua1 = InternetSource.getInstance().randomPCUserAgent();
//隨機生成1個Android User-Agent
String ua2 = InternetSource.getInstance().randomAndroidUserAgent();
//隨機生成1個iOS User-Agent
String ua3 = InternetSource.getInstance().randomIOSUserAgent();
//隨機生成1個網路卡MAC地址,使用:作為分隔符
String mac = InternetSource.getInstance().randomMacAddress(":");
//隨機生成1個RGB顏色值
int[] rgb = OtherSource.getInstance().randomRgbColor();
//隨機生成1個16進位制(HEX)顏色值
String hex = OtherSource.getInstance().randomHexColor();
//隨機股票資訊(滬A+深A+創業板+科創版)
String[] stock = FinancialSource.getInstance().randomStock();
String stockName = stock[0];
String stockCode = stock[1];
//隨機股票資訊(港股)
String[] hkStock = FinancialSource.getInstance().randomHKStock();
String hkStockName = hkStock[0];
String hkStockCode = hkStock[1];
//隨機股票資訊(新三板)
String[] xsbStock = FinancialSource.getInstance().randomXsbStock();
String xsbStockName = xsbStock[0];
String xsbStockCode = xsbStock[1];
//隨機股票資訊(北交所)
String[] bseStock = FinancialSource.getInstance().randomBseStock();
String bseStockName = bseStock[0];
String bseStockCode = bseStock[1];
String[] fund = FinancialSource.getInstance().randomFund();
String fundName = fund[0];
String fundCode = fund[1];
//隨機生成20210201~20210228日期範圍內的K線資料,起始價格為100,單日最大漲幅10%,單日最大跌幅-10%
List<KChartData> kList = FinancialSource.getInstance().randomDailyKChartData(100, 0.1, -0.1, "20210201", "20210228");
//隨機獲取一種貨幣資訊
CurrencyInfo ci = FinancialSource.getInstance().randomCurrencyInfo();
//英超
SportSource.getInstance().randomFootballTeam(CompetitionType.PREMIER_LEAGUE);
//西甲
SportSource.getInstance().randomFootballTeam(CompetitionType.LA_LIGA);
//德甲
SportSource.getInstance().randomFootballTeam(CompetitionType.BUNDESLIGA);
//意甲
SportSource.getInstance().randomFootballTeam(CompetitionType.SERIE_A);
//法甲
SportSource.getInstance().randomFootballTeam(CompetitionType.LIGUE_1);
//荷甲
SportSource.getInstance().randomFootballTeam(CompetitionType.EREDIVISIE);
//CBA
SportSource.getInstance().randomBasketballTeam(CompetitionType.CBA);
//NBA
SportSource.getInstance().randomBasketballTeam(CompetitionType.NBA);
//(亞洲足聯範圍內)隨機足球隊名稱
SportSource.getInstance().randomFootballTeam(FootballConfederation.AFC);
//(歐洲足聯範圍內)隨機足球隊名稱
SportSource.getInstance().randomFootballTeam(FootballConfederation.UEFA);
//隨機足球隊名稱(不限足球聯合會)
SportSource.getInstance().randomFootballTeam();
存取 Wikipedia網頁 可以檢視完整的足球聯合會列表資訊。
OtherSource.getInstance().randomMobileModel();
此工具類支援自定義生成符合業務需求的亂資料,範例如下:
//準備欄位定義
//欄位name:隨機姓名
DataField df1 = new DataField("name", () -> PersonInfoSource.getInstance().randomChineseName());
//欄位birthDate:隨機日期
DataField df2 = new DataField("birthDate", () -> DateTimeSource.getInstance().randomPastDate("yyyy-MM-dd"));
//欄位salary:亂數字
DataField df3 = new DataField("salary", () -> NumberSource.getInstance().randomInt(5000, 18000));
List<DataField> fieldList = Lists.newArrayList(df1, df2, df3);
//設定數量
int total = 10;
//生成JSON
String json = DataUtils.generateJson(fieldList, total);
//生成CSV
String csv = DataUtils.generateCsv(fieldList, total);
//生成SQL之前先要指定表名
String tableName = "user";
//生成SQL插入語句
String sql = DataUtils.generateJson(fieldList, tableName, total);