package com.homeway.dao;
import java.io.IOException;
import java.util.List;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
import de.greenrobot.daogenerator.ToMany;
import de.greenrobot.daogenerator.ToOne;
public class TestDemoGenerator {
static final String DB_NAME = "testDemo";
static final int DB_VERSION = 1;
static final String DB_PACKAGE = "com.homeway.database.gen";
static final String DB_OUT_PATH = "../StudyDemo/src-gen";
public static Property findProperty(Entity entity, String name) {
List<Property> properties = entity.getProperties();
for (Property property : properties) {
if (property.getPropertyName().equals(name)) {
return property;
}
}
return null;
}
// 创建产品类
private static Entity genProduct(Schema schema) {
Entity product = schema.addEntity("Product");
// 序列化
product.implementsSerializable();
// 设置表名
product.setTableName("Product");
// 列: ID, 自增
product.addIdProperty().autoincrement();
// 列: 产品名称, 非空
product.addStringProperty("name").columnName("prd_name").notNull();
product.addStringProperty("code").columnName("prd_code").notNull().unique();
product.addDoubleProperty("price");
product.addDateProperty("prdDate");
return product;
}
// 创建类别类
private static Entity genCategory(Schema schema) {
Entity category = schema.addEntity("Category");
category.implementsSerializable();
category.addIdProperty().autoincrement();
category.addStringProperty("name").columnName("ctg_name").notNull();
return category;
}
// 生成数据库表
public static void genDataBase() throws IOException, Exception{
Schema schema = new Schema(DB_VERSION, DB_PACKAGE);
schema.enableKeepSectionsByDefault();
schema.enableActiveEntitiesByDefault();
Entity product = genProduct(schema);
Entity category = genCategory(schema);
// 创建表间关系
// 产品 - 类别: 一对一
Property fkPrdCate = product.addLongProperty("categoryId").notNull().getProperty();
ToOne prd2cate = product.addToOne(category, fkPrdCate);
prd2cate.setName("category");
// 类别 - 产品: 一对多
ToMany cate2prd = category.addToMany(product, fkPrdCate);
cate2prd.setName("products");
cate2prd.orderAsc(findProperty(product, "prdDate"));
cate2prd.orderDesc(findProperty(product, "price"));
new DaoGenerator().generateAll(schema, DB_OUT_PATH);
}
public static void main(String[] args) {
try {
genDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}