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(); } } }