本教程使用TestDataBuilder自带的school工程生成测试数据。

### 先看看使用TestDataBuilder生成的测试数据吧：(下面用的外观是系统本地的)

### 一:先执行数据库脚本,创建数据库. 数据库脚本如下。(本教程以mysql5为例)

SQL Server 脚本:(或使用项目目录下res\demo\tdbDemoForSqlserver.sql文件)

create database school
go
use school
go

create table teacher
(
ID varchar(255) primary key,
name varchar(255) not null,
sex varchar(10) not null,
tel varchar(255),
homeAddress varchar(255),
)

create table class
(
id varchar(255) primary key,
code varchar(255) not null,
master varchar(255) foreign key(master) REFERENCES teacher(id),
classRome varchar(255) not null,
)

create table student
(
ID int IDENTITY primary key,
no varchar(255) not null,
name varchar(255) not null,
sex varchar(10) not null,
age int not null,
tel varchar(256),
birthday datetime,
classId varchar(255) foreign key(classId) REFERENCES class(id),
homeAddress varchar(255),
createTime datetime,
count int
)
go

My SQL 脚本如下:(或使用项目目录下res\demo\tdbDemoForSqlserver.sql文件)

-- ----------------------------------------------------------------------
-- MySQL Migration Toolkit
-- SQL Create Script
-- ----------------------------------------------------------------------

SET FOREIGN_KEY_CHECKS = 0;

CREATE DATABASE IF NOT EXISTS `school`
CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `school`;
-- -------------------------------------
-- Tables

DROP TABLE IF EXISTS `school`.`class`;
CREATE TABLE `school`.`class` (
`id` VARCHAR(255) NOT NULL,
'code' VARCHAR(255) NOT NULL,
`master` VARCHAR(255) NULL,
`classRome` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `FK__class__master__0425A276` FOREIGN KEY `FK__class__master__0425A276` (`master`)
REFERENCES `school`.`teacher` (`ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE = INNODB;

DROP TABLE IF EXISTS `school`.`student`;
CREATE TABLE `school`.`student` (
`ID` INT(10) NOT NULL AUTO_INCREMENT,
`no` VARCHAR(255) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`sex` VARCHAR(10) NOT NULL,
`age` INT(10) NOT NULL,
`tel` VARCHAR(256) NULL,
`birthday` DATETIME NULL,
`classId` VARCHAR(255) NULL,
`homeAddress` VARCHAR(255) NULL,
`count` INT(10) NULL,
PRIMARY KEY (`ID`),
CONSTRAINT `FK__student__classId__07020F21` FOREIGN KEY `FK__student__classId__07020F21` (`classId`)
REFERENCES `school`.`class` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE = INNODB;

DROP TABLE IF EXISTS `school`.`teacher`;
CREATE TABLE `school`.`teacher` (
`ID` VARCHAR(255) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`sex` VARCHAR(10) NOT NULL,
`tel` VARCHAR(255) NULL,
`homeAddress` VARCHAR(255) NULL,
PRIMARY KEY (`ID`)
)
ENGINE = INNODB;

SET FOREIGN_KEY_CHECKS = 1;

-- ----------------------------------------------------------------------
-- EOF

现在开始吧:

- 点击菜单 工程->打开(或工具栏按钮) ,出现如下对话框:
- 选中TestDataBuilder下面的res\demo\school目录，点击“打开”,出现如下界面:
- school下面应该有三个表，并且都有配置数据生成规则。
- 现在点击 数据库->默认连接,修改数据库连接.(如果你使用的SQLServer数据库，请选择MS SQL Server类型,数据库选择school)
- 在密码栏输入你的数据库密码。
- 点击确定.
- 点击规则->生成测试数据.出现如下界面:
- 图片下面是要生成的所有表信息，默认所有配置的表都会生成 测试数据。如果某些表你不需要为他生成测试数据，你只需要去掉前面的钩就行了。点击开始，开始生成测试数据。(点击开始后，开始按钮会变成停止)
- 正在生成测试数据，只到出现如下对话框:
- 点击确定后,回到原界面。
- 再点击确定，回到主界面。在查询分析器中查询各表生成的数据。（本页前三图所示） ,要想生成这样的数据,其实很简单,你需要自己手动编辑规则.生成的数据一会按你的需要生成数据了.了解更多关于规则

### 来看看School示例工程的详细配置吧:

teacher表id列的规则，类型改为Integer,是自动增长的，从10开始往上长，加上前缀tea,生成的数据为:tea100,tea101....

teacher表homeAddress列的规则，使用自定义类型ChinaAddress,生成数据如:湖北省，武汉市。生成方法无效。

teacher表name列的规则，使用自定义类型ChineseName.生成中文姓名

teacher表sex列的规则，String类型，采用枚举值，(取值男，女,其中男女比重为2:1)

teacher表tel列的规则，类型为手机号码类型，并且在1310000000到15999999999之间。Null比例为50%.可以看看生成的数据,tel字段大约有50%为Null的。

student表age列的规则，是随机的数值，并且都在20到30之间。

student表birthday列的规则，是随机的时间值，并且都在1984-08-08 00-00-00到1987-08-08 00-00-00之间。

student表id列使用的class4student规则，使用的是sqlquery是使用语句"select id from student" 做查询的。

student表count列的规则，是随机的数值，并且都在800到900之间。

student表homeAddress列的规则，使用的是自定义类型ChinaAddress。生成中国的地址。

student表name列的规则，使用自定义类型ChineseName，生成中文名字。

student表no列的规则，是由"BD-" + student所在的班级的Code + student的姓名组成,生成的数据如下:BD-WH10087:张三,下面是Java代码:

student表sex列的规则，使用枚举值,取值男，女，比例为 1:1

student表tel列的规则，使用自定义类型手机号码，并且值在13100000000到15999999999之间。

class表classRome列的规则，使用随机生成的String,长度在20到40之间。

class表id列的规则，使用自动增长的Integer型，从1000开始，到9999999结束。

student表master列的规则teacher4class，使用sqlquery类型（因为是外键，需要从引用表中查出来)。

class表的code列的规则,使用WH前缀,加数字增长方式.