提交 b8e6ccc6 编写于 作者: J jialinsun

complete homework, just test, ignore it.

上级 11461d3e
......@@ -160,7 +160,9 @@
${basedir}/src/main/resources/META-INF/dal/model/utilization-report-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/utilization-config-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/domainGroup-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/metric-group-config-manifest.xml,</manifest>
${basedir}/src/main/resources/META-INF/dal/model/metric-group-config-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/animal-manifest.xml,
</manifest>
</configuration>
</execution>
<execution>
......
......@@ -11,6 +11,8 @@ final class CatDatabaseConfigurator extends AbstractJdbcResourceConfigurator {
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
all.add(defineJdbcDataSourceComponent("cat", "com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/cat", "test", "123", "<![CDATA[useUnicode=true&autoReconnect=true]]>"));
defineSimpleTableProviderComponents(all, "cat", com.dianping.cat.home.dal.report._INDEX.getEntityClasses());
defineDaoComponents(all, com.dianping.cat.home.dal.report._INDEX.getDaoClasses());
......
......@@ -11,6 +11,8 @@ final class UserDatabaseConfigurator extends AbstractJdbcResourceConfigurator {
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
all.add(defineJdbcDataSourceComponent("user", "com.mysql.jdbc.Driver", "jdbc:mysql://192.168.8.44:3306/hawk", "hawk", "hawk", "<![CDATA[useUnicode=true&autoReconnect=true]]>"));
defineSimpleTableProviderComponents(all, "user", com.dianping.cat.home.dal.user._INDEX.getEntityClasses());
defineDaoComponents(all, com.dianping.cat.home.dal.user._INDEX.getDaoClasses());
......
......@@ -45,7 +45,9 @@ com.dianping.cat.report.page.statistics.Handler.class,
com.dianping.cat.report.page.alteration.Handler.class,
com.dianping.cat.report.page.monitor.Handler.class
com.dianping.cat.report.page.monitor.Handler.class,
com.dianping.cat.report.page.test.Handler.class
})
public class ReportModule extends AbstractModule {
......
......@@ -41,10 +41,12 @@ public enum ReportPage implements Page {
STATISTICS("statistics", "statistics", "Statistics", "Statistics", true),
ALTERATION("alteration", "alteration", "Alteration", "Alteration", true),
MONITOR("monitor", "monitor", "Monitor", "Monitor", true),
ALTERATION("alteration", "alteration", "Alteration", "Alteration", true);
TEST("test", "test", "Test", "Test", true);
private String m_name;
private String m_path;
......
package com.dianping.cat.report.page.test;
public enum Action implements org.unidal.web.mvc.Action {
INSERT("insert"),
QUERY("query");
private String m_name;
private Action(String name) {
m_name = name;
}
public static Action getByName(String name, Action defaultAction) {
for (Action action : Action.values()) {
if (action.getName().equals(name)) {
return action;
}
}
return defaultAction;
}
@Override
public String getName() {
return m_name;
}
}
package com.dianping.cat.report.page.test;
import com.dianping.cat.report.ReportContext;
public class Context extends ReportContext<Payload> {
}
package com.dianping.cat.report.page.test;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import com.dianping.cat.home.dal.report.Test;
import com.dianping.cat.home.dal.report.TestDao;
import com.dianping.cat.home.dal.report.TestEntity;
import com.dianping.cat.report.ReportPage;
import org.unidal.dal.jdbc.DalException;
import org.unidal.lookup.annotation.Inject;
import org.unidal.web.mvc.PageHandler;
import org.unidal.web.mvc.annotation.InboundActionMeta;
import org.unidal.web.mvc.annotation.OutboundActionMeta;
import org.unidal.web.mvc.annotation.PayloadMeta;
public class Handler implements PageHandler<Context> {
@Inject
private JspViewer m_jspViewer;
@Inject
private TestDao m_testDao;
@Override
@PayloadMeta(Payload.class)
@InboundActionMeta(name = "test")
public void handleInbound(Context ctx) throws ServletException, IOException {
// display only, no action here
}
@Override
@OutboundActionMeta(name = "test")
public void handleOutbound(Context ctx) throws ServletException, IOException {
Model model = new Model(ctx);
Payload payload = ctx.getPayload();
Action action = payload.getAction();
Test test = m_testDao.createLocal();
String name = payload.getName();
test.setName(name);
switch (action) {
case INSERT:
try {
m_testDao.insert(test);
model.setName(name);
} catch (DalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case QUERY:
try {
Test result = m_testDao.queryAll(TestEntity.READSET_FULL);
model.setTestList(result);
} catch (DalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
default:
throw new RuntimeException("Unknown action: " + action);
}
model.setAction(action);
model.setPage(ReportPage.TEST);
if (!ctx.isProcessStopped()) {
m_jspViewer.view(ctx, model);
}
}
}
package com.dianping.cat.report.page.test;
public enum JspFile {
INSERT_VIEW("/jsp/report/test.jsp"),
QUERY_VIEW("/jsp/report/test2.jsp");
private String m_path;
private JspFile(String path) {
m_path = path;
}
public String getPath() {
return m_path;
}
}
package com.dianping.cat.report.page.test;
import com.dianping.cat.report.ReportPage;
import org.unidal.web.mvc.view.BaseJspViewer;
public class JspViewer extends BaseJspViewer<ReportPage, Action, Context, Model> {
@Override
protected String getJspFilePath(Context ctx, Model model) {
Action action = model.getAction();
switch (action) {
case INSERT:
return JspFile.INSERT_VIEW.getPath();
case QUERY:
return JspFile.QUERY_VIEW.getPath();
}
throw new RuntimeException("Unknown action: " + action);
}
}
package com.dianping.cat.report.page.test;
import java.util.List;
import com.dianping.cat.home.dal.report.Test;
import com.dianping.cat.report.ReportPage;
import org.unidal.web.mvc.ViewModel;
public class Model extends ViewModel<ReportPage, Action, Context> {
private String m_name;
private Test m_testList;
public Model(Context ctx) {
super(ctx);
}
public Test getTestList() {
return m_testList;
}
public void setTestList(Test testList) {
m_testList = testList;
}
public String getName() {
return m_name;
}
public void setName(String name) {
m_name = name;
}
@Override
public Action getDefaultAction() {
return Action.INSERT;
}
@Override
public String toString() {
return "Model [m_testList=" + m_testList.toString() + "]";
}
}
package com.dianping.cat.report.page.test;
import com.dianping.cat.report.ReportPage;
import org.unidal.web.mvc.ActionContext;
import org.unidal.web.mvc.ActionPayload;
import org.unidal.web.mvc.payload.annotation.FieldMeta;
public class Payload implements ActionPayload<ReportPage, Action> {
private ReportPage m_page;
@FieldMeta("op")
private Action m_action;
@FieldMeta("name")
private String m_name;
public void setAction(String action) {
m_action = Action.getByName(action, Action.INSERT);
}
public String getName() {
return m_name;
}
public void setName(String name) {
m_name = name;
}
@Override
public Action getAction() {
return m_action;
}
@Override
public ReportPage getPage() {
return m_page;
}
@Override
public void setPage(String page) {
m_page = ReportPage.getByName(page, ReportPage.TEST);
}
@Override
public void validate(ActionContext<?> ctx) {
if (m_action == null) {
m_action = Action.INSERT;
}
}
}
package com.dianping.cat.report.page.test;
import java.io.IOException;
import org.xml.sax.SAXException;
import com.dianping.cat.home.animal.entity.*;
import com.dianping.cat.home.animal.transform.DefaultSaxParser;
import com.dianping.cat.home.animal.transform.DefaultXmlBuilder;
import org.junit.Assert;
/*
<animal>
<dog name="jack" size="big">
<food name="chicken" time="morning"></food>
<food name="bone" time="noon"></food>
<food name="rice" time="evening"></food>
</dog>
<cat name="tom" size="medium">
<food name="rice" time="morning"></food>
<food name="fish" time="noon"></food>
<food name="mouse" time="evening"></food>
</cat>
<mouse name="jerry" size="small">
<food name="rice" time="morning"></food>
<food name="bread" time="noon"></food>
<food name="noodle" time="evening"></food>
</mouse>
</animal>
*/
public class testModelXml {
public static void main(String[] args){
DefaultXmlBuilder builder = new DefaultXmlBuilder();
DefaultSaxParser parser = new DefaultSaxParser();
Animal animal = getAnimal();
String xmlString = builder.buildXml(animal);
System.out.println(xmlString);
try {
Animal generatedAnimal = parser.parse(xmlString);
Assert.assertEquals(animal, generatedAnimal);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Animal getAnimal(){
Animal animal = new Animal();
Cat cat = new Cat();
cat.setName("tom");
cat.setSize("medium");
Dog dog = new Dog();
dog.setName("jack");
dog.setSize("big");
Mouse mouse = new Mouse();
mouse.setName("jerry");
mouse.setSize("small");
Food catFoodMorning = new Food();
catFoodMorning.setName("rice");
catFoodMorning.setTime("morning");
Food catFoodNoon = new Food();
catFoodNoon.setName("fish");
catFoodNoon.setTime("noon");
Food catFoodEvening = new Food();
catFoodEvening.setName("mouse");
catFoodEvening.setTime("evening");
Food dogFoodMorning = new Food();
dogFoodMorning.setName("chicken");
dogFoodMorning.setTime("morning");
Food dogFoodNoon = new Food();
dogFoodNoon.setName("bone");
dogFoodNoon.setTime("noon");
Food dogFoodEvening = new Food();
dogFoodEvening.setName("rice");
dogFoodEvening.setTime("evening");
Food mouseFoodMorning = new Food();
mouseFoodMorning.setName("rice");
mouseFoodMorning.setTime("morning");
Food mouseFoodNoon = new Food();
mouseFoodNoon.setName("bread");
mouseFoodNoon.setTime("noon");
Food mouseFoodEvening = new Food();
mouseFoodNoon.setName("noodle");
mouseFoodNoon.setTime("evening");
dog.addFood(dogFoodMorning);
dog.addFood(dogFoodNoon);
dog.addFood(dogFoodEvening);
cat.addFood(catFoodMorning);
cat.addFood(catFoodNoon);
cat.addFood(catFoodEvening);
mouse.addFood(mouseFoodMorning);
mouse.addFood(mouseFoodNoon);
mouse.addFood(mouseFoodEvening);
animal.setCat(cat);
animal.setDog(dog);
animal.setMouse(mouse);
return animal;
}
}
......@@ -254,7 +254,43 @@
</query>
</query-defs>
</entity>
<entity name="topology-graph" table="topologyGraph" alias="t">
<entity name="test" table="test" alias="t">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="100" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="name" unique="true" members="name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="topology-graph" table="topologyGraph" alias="t2">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="period" field="period" value-type="Date" nullable="false" />
......
......@@ -81,6 +81,46 @@
</query>
</query-defs>
</entity>
<entity name="test" table="test" alias="t">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="100" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="name" unique="true" members="name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="query-all" type="SELECT">
<statement><![CDATA[SELECT <FIELDS/> FROM <TABLE/>]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
</entities>
......
<?xml version="1.0" encoding="UTF-8"?>
<model>
<entity name="animal" root="true">
<entity-ref name="dog" />
<entity-ref name="cat" />
<entity-ref name="mouse" />
</entity>
<entity name="dog">
<attribute name="name" value-type="String" />
<attribute name="size" value-type="String" />
<entity-ref name="food" type="list" names="foods" />
</entity>
<entity name="food">
<attribute name="name" value-type="String" />
<attribute name="time" value-type="String" />
</entity>
<entity name="cat">
<attribute name="name" value-type="String" />
<attribute name="size" value-type="String" />
<entity-ref name="food" type="list" names="foods" />
</entity>
<entity name="mouse">
<attribute name="name" value-type="String" />
<attribute name="size" value-type="String" />
<entity-ref name="food" type="list" names="foods" />
</entity>
</model>
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<file path="animal-codegen.xml" />
<file path="animal-model.xml" />
</manifest>
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.home.animal" enable-sax-parser="true">
<entity name="animal" root="true">
<entity-ref name="dog" />
<entity-ref name="cat" />
<entity-ref name="mouse" />
</entity>
<entity name="dog">
<attribute name="name" value-type="String" />
<attribute name="size" value-type="String" />
<entity-ref name="food" type="list" names="foods" />
</entity>
<entity name="food">
<attribute name="name" value-type="String" />
<attribute name="time" value-type="String" />
</entity>
<entity name="cat">
<attribute name="name" value-type="String" />
<attribute name="size" value-type="String" />
<entity-ref name="food" type="list" names="foods" />
</entity>
<entity name="mouse">
<attribute name="name" value-type="String" />
<attribute name="size" value-type="String" />
<entity-ref name="food" type="list" names="foods" />
</entity>
</model>
......@@ -1485,6 +1485,30 @@
<datasourceFile>/data/appdatas/cat/datasources.xml</datasourceFile>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.datasource.DataSource</role>
<role-hint>cat</role-hint>
<implementation>org.unidal.dal.jdbc.datasource.JdbcDataSource</implementation>
<configuration>
<id>cat</id>
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</connection-timeout>
<idle-timeout>10m</idle-timeout>
<statement-cache-size>1000</statement-cache-size>
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/cat</url>
<user>test</user>
<password>123</password>
<connectionProperties><![CDATA[useUnicode=true&autoReconnect=true]]></connectionProperties>
</properties>
</configuration>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.datasource.JdbcDataSourceDescriptorManager</role>
</requirement>
</requirements>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>alteration</role-hint>
......@@ -1545,6 +1569,16 @@
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>test</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>test</logical-table-name>
<physical-table-name>test</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>topology-graph</role-hint>
......@@ -1619,6 +1653,15 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.TestDao</role>
<implementation>com.dianping.cat.home.dal.report.TestDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
<implementation>com.dianping.cat.home.dal.report.TopologyGraphDao</implementation>
......@@ -1694,6 +1737,30 @@
</requirement>
</requirements>
</component>
<component>
<role>org.unidal.dal.jdbc.datasource.DataSource</role>
<role-hint>user</role-hint>
<implementation>org.unidal.dal.jdbc.datasource.JdbcDataSource</implementation>
<configuration>
<id>user</id>
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</connection-timeout>
<idle-timeout>10m</idle-timeout>
<statement-cache-size>1000</statement-cache-size>
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://192.168.8.44:3306/hawk</url>
<user>hawk</user>
<password>hawk</password>
<connectionProperties><![CDATA[useUnicode=true&autoReconnect=true]]></connectionProperties>
</properties>
</configuration>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.datasource.JdbcDataSourceDescriptorManager</role>
</requirement>
</requirements>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>dp-admin-login</role-hint>
......@@ -2889,6 +2956,36 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.test.Handler</role>
<implementation>com.dianping.cat.report.page.test.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.test.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.TestDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.test.JspViewer</role>
<implementation>com.dianping.cat.report.page.test.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.TestDao</role>
<implementation>com.dianping.cat.home.dal.report.TestDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.SystemModule</role>
<implementation>com.dianping.cat.system.SystemModule</implementation>
......
......@@ -4,8 +4,8 @@
<datasource>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/cat</url>
<user>root</user>
<password>root</password>
<user>test</user>
<password>123</password>
<properties>useUnicode=true&amp;autoReconnect=true</properties>
</datasource>
<group name="report" package="com.dianping.cat.home.dal.report">
......@@ -17,6 +17,7 @@
<table name="monthly_report_content"/>
<table name="weekly_report_content"/>
<table name="alteration"/>
<table name="test"/>
</group>
<group name="alarm" package="com.dianping.cat.home.dal.alarm">
<table name="mailRecord"/>
......
......@@ -36,4 +36,7 @@
<model package="com.dianping.cat.home.metricGroup" name="metric-group-config">
<sample-model>src/test/resources/com/dianping/cat/system/config/metricGroup.xml</sample-model>
</model>
<model package="com.dianping.cat.home.animal" name="animal">
<sample-model>test.xml</sample-model>
</model>
</wizard>
......@@ -55,13 +55,16 @@
</page>
<page name="statistics" title="Statistics" path="statistics" view="/jsp/report/bug/bug.jsp" template="default">
<description>Statistics</description>
</page>
</page>
<page name="alteration" title="Alteration" path="alteration" template="default">
<description>Alteration</description>
</page>
<page name="monitor" title="Monitor" path="monitor" template="default">
<description>Monitor</description>
</page>
<page name="test" title="Test" path="test" template="default">
<description>Test</description>
</page>
</module>
<module name="system" path="s" default="false">
<page name="alarm" title="Alarm" default="true" path="alarm" view="/jsp/system/alarm/alarm.jsp">
......
<%@ page contentType="text/html; charset=utf-8" %>
<jsp:useBean id="ctx" type="com.dianping.cat.report.page.alteration.Context" scope="request"/>
<jsp:useBean id="payload" type="com.dianping.cat.report.page.alteration.Payload" scope="request"/>
<jsp:useBean id="model" type="com.dianping.cat.report.page.alteration.Model" scope="request"/>
View of alteration page under report
\ No newline at end of file
<%@ page contentType="text/html; charset=utf-8" %>
<jsp:useBean id="ctx" type="com.dianping.cat.report.page.test.Context" scope="request"/>
<jsp:useBean id="payload" type="com.dianping.cat.report.page.test.Payload" scope="request"/>
<jsp:useBean id="model" type="com.dianping.cat.report.page.test.Model" scope="request"/>
insert data : ${model.name}
\ No newline at end of file
<%@ page contentType="text/html; charset=utf-8" %>
<jsp:useBean id="ctx" type="com.dianping.cat.report.page.test.Context" scope="request"/>
<jsp:useBean id="payload" type="com.dianping.cat.report.page.test.Payload" scope="request"/>
<jsp:useBean id="model" type="com.dianping.cat.report.page.test.Model" scope="request"/>
All data: ${model}
\ No newline at end of file
<animal>
<dog name="jack" size="big">
<food name="chicken" time="morning"></food>
<food name="bone" time="noon"></food>
<food name="rice" time="evening"></food>
</dog>
<cat name="tom" size="medium">
<food name="rice" time="morning"></food>
<food name="fish" time="noon"></food>
<food name="mouse" time="evening"></food>
</cat>
<mouse name="jerry" size="small">
<food name="rice" time="morning"></food>
<food name="bread" time="noon"></food>
<food name="noodle" time="evening"></food>
</mouse>
</animal>
......@@ -393,12 +393,12 @@ CREATE TABLE `alteration` (
`hostname` varchar(128) NOT NULL COMMENT '变更机器名',
`ip` varchar(128) DEFAULT NULL COMMENT '变更机器IP',
`date` datetime NOT NULL COMMENT '变更时间',
`user` varchar(45) NOT NULL COMMENT '变更用户,
`alt_group` varchar(45) DEFAULT NULL COMMENT '变更组别,
`user` varchar(45) NOT NULL COMMENT '变更用户',
`alt_group` varchar(45) DEFAULT NULL COMMENT '变更组别',
`content` text NOT NULL COMMENT '变更内容',
`url` varchar(200) DEFAULT NULL COMMENT '变更链接',
`creation_date` datetime NOT NULL COMMENT '数据库创建时间',
PRIMARY KEY (`id`),
KEY `ind_date_domain_host` (`date`,`domain`,`hostname`)
) ENGINE=InnoDB AUTO_INCREMENT=1241 DEFAULT CHARSET=utf8 COMMENT='变更表;
) ENGINE=InnoDB AUTO_INCREMENT=1241 DEFAULT CHARSET=utf8 COMMENT='变更表';
<animal>
<dog name="jack" size="big">
<food name="chicken" time="morning"></food>
<food name="bone" time="noon"></food>
<food name="rice" time="evening"></food>
</dog>
<cat name="tom" size="medium">
<food name="rice" time="morning"></food>
<food name="fish" time="noon"></food>
<food name="mouse" time="evening"></food>
</cat>
<mouse name="jerry" size="small">
<food name="rice" time="morning"></food>
<food name="bread" time="noon"></food>
<food name="noodle" time="evening"></food>
</mouse>
</animal>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册