mysql客户端反向映射entity_数据库反向生成实体类

数据库反向生成实体类是dbdesigner的一个功能,现在很多开发工具也带有这样的功能。实现原理也很简单:先通过SQL语句获取所有数据库表,再通过SQL语句获取表的结构,最后根据表的字段信息生成相应的hibernate实体类。

本文的初步实现代码只考虑mysql 5.1版本,其它版本数据库暂不考虑。

获取所有表的SQl:

show tables

获取表字段信息的SQL有两种:

(1) SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT FROM information_schema.columns WHERE table_name = 表名

(2) describe 表名

主要的实现代码如下

DBDao主要提供获取数据库表和表字段信息的方法

4f1150b881333f12a311ae9ef34da474.pngimportjava.sql.Connection;

4f1150b881333f12a311ae9ef34da474.pngimportjava.sql.DriverManager;

4f1150b881333f12a311ae9ef34da474.pngimportjava.sql.SQLException;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.ArrayList;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.List;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.Map;

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.dbutils.DbUtils;

4f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.dbutils.QueryRunner;

4f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.dbutils.ResultSetHandler;

4f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.dbutils.handlers.ArrayListHandler;

4f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.dbutils.handlers.MapListHandler;

4f1150b881333f12a311ae9ef34da474.pngimportorg.dbdesigner.ui.component.ConnectDbDialog;

4f1150b881333f12a311ae9ef34da474.pngimportorg.dbdesigner.ui.util.NodeProperty;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassDBDao9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngprivateNodeProperty conConfig;

d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicDBDao(NodeProperty con)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.conConfig=con;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngprivateConnection getConnect()throwsInstantiationException,

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif            IllegalAccessException, ClassNotFoundException, SQLException9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        String strDriver=conConfig.getProperty(ConnectDbDialog.PRO_DRIVER);

d18c02628675d0a2c816449d98bda930.png        String strUrl="jdbc:mysql://"d18c02628675d0a2c816449d98bda930.png+conConfig.getProperty(ConnectDbDialog.PRO_SERVER)+":"d18c02628675d0a2c816449d98bda930.png+conConfig.getProperty(ConnectDbDialog.PRO_PORT)+"/"d18c02628675d0a2c816449d98bda930.png+conConfig.getProperty(ConnectDbDialog.PRO_DATABASE);

d18c02628675d0a2c816449d98bda930.png        String strUser=conConfig.getProperty(ConnectDbDialog.PRO_USER);

d18c02628675d0a2c816449d98bda930.png        String strPass=conConfig.getProperty(ConnectDbDialog.PRO_PSW);

d18c02628675d0a2c816449d98bda930.png        Class.forName(strDriver).newInstance();

d18c02628675d0a2c816449d98bda930.pngreturnDriverManager.getConnection(strUrl, strUser, strPass);

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png    

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/** *//**d18c02628675d0a2c816449d98bda930.png     * 获取所有数据表

ecedf933ec37d714bd4c2545da43add2.png*/97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicArrayList getAllTable()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        ArrayList result=null;

d18c02628675d0a2c816449d98bda930.png        Connection con=null;

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giftry9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            con=getConnect();

d18c02628675d0a2c816449d98bda930.png            QueryRunner qr=newQueryRunner();

d18c02628675d0a2c816449d98bda930.png            ResultSetHandler rsh=newArrayListHandler();

d18c02628675d0a2c816449d98bda930.png            String strsql="show tables";//show tables为mysql获取所有表的方法d18c02628675d0a2c816449d98bda930.pngresult=qr.query(con, strsql, rsh);

d18c02628675d0a2c816449d98bda930.png//for (int i = 0; i 

d18c02628675d0a2c816449d98bda930.png//System.out.println(((Object[]) result.get(i))[0]);

d18c02628675d0a2c816449d98bda930.png//}97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif}catch(Exception ex)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            ex.printStackTrace(System.out);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif        }finally9b8a8a44dd1c74ae49c20a7cd451974e.png{

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giftry9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                DbUtils.close(con);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif            }catch(Exception ex)9b8a8a44dd1c74ae49c20a7cd451974e.png{

ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.pngreturnresult;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/** *//**d18c02628675d0a2c816449d98bda930.png     * 获取指定表的字段信息

d18c02628675d0a2c816449d98bda930.png     *@paramt 表名

ecedf933ec37d714bd4c2545da43add2.png*/97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicNodeProperty getTableDescribe(String t)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        Connection con=null;

d18c02628675d0a2c816449d98bda930.png        NodeProperty table=NodeProperty.getInstance(NodeProperty.NODE_TABLE);

d18c02628675d0a2c816449d98bda930.png        table.addProperty(NodeProperty.PROPERTY_NAME, t);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giftry9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            con=getConnect();

d18c02628675d0a2c816449d98bda930.png            QueryRunner qr=newQueryRunner();

d18c02628675d0a2c816449d98bda930.png            String strsql="describe"+t;

d18c02628675d0a2c816449d98bda930.png            List results=qr.query(con, strsql,newMapListHandler());

d18c02628675d0a2c816449d98bda930.png            NodeProperty columns=NodeProperty

d18c02628675d0a2c816449d98bda930.png                    .getInstance(NodeProperty.NODE_COLUMNS);

d18c02628675d0a2c816449d98bda930.png            table.addChild(columns);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giffor(inti=0; i{

d18c02628675d0a2c816449d98bda930.png                NodeProperty column=NodeProperty

d18c02628675d0a2c816449d98bda930.png                        .getInstance(NodeProperty.NODE_COLUMN);

d18c02628675d0a2c816449d98bda930.png                Map map=(Map) results.get(i);

d18c02628675d0a2c816449d98bda930.png                String name=map.get("COLUMN_NAME").toString();

d18c02628675d0a2c816449d98bda930.png                String key=map.get("COLUMN_KEY").toString();

d18c02628675d0a2c816449d98bda930.png                String isKey=key.equals("PRI")?"true":"false";

d18c02628675d0a2c816449d98bda930.png                String nullable=map.get("IS_NULLABLE").toString();

d18c02628675d0a2c816449d98bda930.pngbooleanisNullable=nullable.equals("YES")?true:false;

d18c02628675d0a2c816449d98bda930.png                String type=map.get("COLUMN_TYPE").toString();

d18c02628675d0a2c816449d98bda930.png                String unsigned="false";

d18c02628675d0a2c816449d98bda930.pngintindex=type.indexOf("unsigned");

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(index>0)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                    unsigned="true";

d18c02628675d0a2c816449d98bda930.png                    type=type.substring(0, index-1);

ecedf933ec37d714bd4c2545da43add2.png                }d18c02628675d0a2c816449d98bda930.png                column.addProperty(NodeProperty.PROPERTY_NAME, name);

d18c02628675d0a2c816449d98bda930.png                column.addProperty(NodeProperty.PROPERTY_COMMENT, name);

d18c02628675d0a2c816449d98bda930.png                column.addProperty(NodeProperty.PROPERTY_PRIMARYKEY, isKey);

d18c02628675d0a2c816449d98bda930.png                column.addProperty(NodeProperty.PROPERTY_UNSIGNED, unsigned);

d18c02628675d0a2c816449d98bda930.png                column.addProperty(NodeProperty.PROPERTY_DATATYPE, type);

d18c02628675d0a2c816449d98bda930.png                columns.addChild(column);

ecedf933ec37d714bd4c2545da43add2.png            }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif        }catch(Exception ex)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            ex.printStackTrace(System.out);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif        }finally9b8a8a44dd1c74ae49c20a7cd451974e.png{

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giftry9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                DbUtils.close(con);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif            }catch(Exception ex)9b8a8a44dd1c74ae49c20a7cd451974e.png{

ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.pngreturntable;

ecedf933ec37d714bd4c2545da43add2.png    }8f1ba5b45633e9678d1db480c16cae3f.png}

GenerateEntity主要是根据NodeProperty的内容,生成实体类。

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.List;

4f1150b881333f12a311ae9ef34da474.pngimportorg.dbdesigner.db.MySqlDataType;

4f1150b881333f12a311ae9ef34da474.pngimportorg.dbdesigner.ui.component.DBGraphComponent;

4f1150b881333f12a311ae9ef34da474.pngimportorg.dbdesigner.ui.util.NodeProperty;

4f1150b881333f12a311ae9ef34da474.pngimportorg.dbdesigner.utils.FileUtil;

4f1150b881333f12a311ae9ef34da474.pngimportorg.dbdesigner.utils.StringUtil;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassGenerateEntity9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngprivateString filePath=null;

d18c02628675d0a2c816449d98bda930.pngprivateString packageName=null;

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicGenerateEntity(String filePath, String packageName, DBGraphComponent graphComponent)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.filePath=filePath;

d18c02628675d0a2c816449d98bda930.pngthis.packageName=packageName;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png    

d18c02628675d0a2c816449d98bda930.png//根据DBDao.getTableDescribe(String t)方法返回的NodeProperty内容,生成相应的实体类97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidNodeToEntity(NodeProperty node)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        StringBuilder sr=newStringBuilder();

d18c02628675d0a2c816449d98bda930.png        StringBuilder declareSr=newStringBuilder();

d18c02628675d0a2c816449d98bda930.png        StringBuilder methodSr=newStringBuilder();

d18c02628675d0a2c816449d98bda930.png        String tableName=node.getProperty(NodeProperty.PROPERTY_NAME);

d18c02628675d0a2c816449d98bda930.png        String uTableName=StringUtil.upperFirst(tableName);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(StringUtil.isEmpty(packageName)==false)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            sr.append("package").append(packageName).append("\n");

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png//添加引用包d18c02628675d0a2c816449d98bda930.pngsr.append("import java.io.Serializable;\n");

d18c02628675d0a2c816449d98bda930.png        sr.append("import javax.persistence.*;\n");

d18c02628675d0a2c816449d98bda930.png        NodeProperty columns=node.getChildByType(NodeProperty.NODE_COLUMNS);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(columns!=null)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            Listlist=columns.getChild();

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(list.size()>0)9b8a8a44dd1c74ae49c20a7cd451974e.png{

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giffor(NodeProperty column:list)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                    String dataType=column.getProperty(NodeProperty.PROPERTY_DATATYPE);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(dataType!=null)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                         String type=dataType.toLowerCase();

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(type.equals("date")||type.equals("datetime"))9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                             sr.append("import java.util.Date;\n");

ecedf933ec37d714bd4c2545da43add2.png                         }ecedf933ec37d714bd4c2545da43add2.png                    }d18c02628675d0a2c816449d98bda930.png//声明d18c02628675d0a2c816449d98bda930.pnggenerateDeclare(declareSr, column, dataType);

d18c02628675d0a2c816449d98bda930.png//方法d18c02628675d0a2c816449d98bda930.pnggenerateMethod(methodSr, column, dataType);

ecedf933ec37d714bd4c2545da43add2.png                }ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png        

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/**//*输出类名*/d18c02628675d0a2c816449d98bda930.png        sr.append("\n");

d18c02628675d0a2c816449d98bda930.png        sr.append("@Entity\n");

d18c02628675d0a2c816449d98bda930.png        sr.append("@Table(name =\"").append(tableName)d18c02628675d0a2c816449d98bda930.png.append("\")\n");d18c02628675d0a2c816449d98bda930.pngsr.append("public class").append(uTableName).append(

d18c02628675d0a2c816449d98bda930.png"implements Serializable {\n");

d18c02628675d0a2c816449d98bda930.png        sr.append("\tprivate static final long serialVersionUID = 1L;\n");

d18c02628675d0a2c816449d98bda930.png        sr.append("\n");

d18c02628675d0a2c816449d98bda930.png        

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/**//*输出声明*/d18c02628675d0a2c816449d98bda930.png        sr.append(declareSr.toString());

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/**//*输出方法*/d18c02628675d0a2c816449d98bda930.png        sr.append(methodSr.toString());

d18c02628675d0a2c816449d98bda930.png        

d18c02628675d0a2c816449d98bda930.png        sr.append("}\n");

d18c02628675d0a2c816449d98bda930.png        sr.append("\n");

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giftry9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            FileUtil.save(filePath+FileUtil.sp+uTableName+".java", sr.toString().getBytes());

ecedf933ec37d714bd4c2545da43add2.png        }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifcatch(Exception e)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            System.out.println("生成实体类出错!");

d18c02628675d0a2c816449d98bda930.png            e.printStackTrace();

ecedf933ec37d714bd4c2545da43add2.png        }ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png    

d18c02628675d0a2c816449d98bda930.png//生成字段声明内容97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidgenerateDeclare(StringBuilder deSr, NodeProperty column, String dataType)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngintstart=dataType.indexOf("(");

d18c02628675d0a2c816449d98bda930.pngintend=dataType.indexOf(")");

d18c02628675d0a2c816449d98bda930.png        String type=dataType;

d18c02628675d0a2c816449d98bda930.png        String lenght="";

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(start>0&&end>0)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            type=dataType.substring(0, start);

d18c02628675d0a2c816449d98bda930.png            lenght=dataType.substring(start+1, dataType.length()-1);

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png        String primaryKey=column.getProperty(NodeProperty.PROPERTY_PRIMARYKEY);

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(primaryKey!=null&&primaryKey.equals("true"))9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            deSr.append("\t@Id\n");

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png        deSr.append("\t@Column(name =\"").append(column.getProperty(NodeProperty.PROPERTY_NAME)).append("\"");

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(type.equals("varchar")||type.equals("char"))9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            deSr.append(", length=").append(lenght);

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png        deSr.append(")\n");

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(type.equals("date")||type.equals("datetime"))9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            deSr.append("\t@Temporal(TemporalType.TIMESTAMP)\n");

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png        

d18c02628675d0a2c816449d98bda930.png        deSr.append("\tprivate").append(MySqlDataType.get(type)).append("").append(column.getProperty(NodeProperty.PROPERTY_NAME)).append(";\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\n");

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png    

d18c02628675d0a2c816449d98bda930.png//生成字段的setter、getter方法97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidgenerateMethod(StringBuilder deSr, NodeProperty column, String dataType)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        String name=column.getProperty(NodeProperty.PROPERTY_NAME);

d18c02628675d0a2c816449d98bda930.png        String upperName=StringUtil.upperFirst(name);

d18c02628675d0a2c816449d98bda930.pngintstart=dataType.indexOf("(");

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(start>0)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            dataType=dataType.substring(0, start);

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png        String type=MySqlDataType.get(dataType)!=null?MySqlDataType.get(dataType) : dataType;

d18c02628675d0a2c816449d98bda930.png        deSr.append("\tpublic").append(type).append("").append(

d18c02628675d0a2c816449d98bda930.png"boolean".equals(dataType)?"is":"get").append(upperName)

d18c02628675d0a2c816449d98bda930.png                .append("() {\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\t\treturn").append(name).append(";\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\t}\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\tpublic void set").append(upperName).append("(").append(type)

d18c02628675d0a2c816449d98bda930.png                .append("").append(name).append(") {\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\t\tthis.").append(name).append("=").append(name)

d18c02628675d0a2c816449d98bda930.png                .append(";\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\t}\n");

d18c02628675d0a2c816449d98bda930.png        deSr.append("\n");

ecedf933ec37d714bd4c2545da43add2.png    }8f1ba5b45633e9678d1db480c16cae3f.png}

NodeProperty记录xml节点的内容

4f1150b881333f12a311ae9ef34da474.pngimportjava.io.Serializable;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.ArrayList;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.Iterator;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.List;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.Map;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.Map.Entry;

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.Hashtable;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif/** *//**d18c02628675d0a2c816449d98bda930.png * 记录xml内容的java类

8f1ba5b45633e9678d1db480c16cae3f.png*/1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassNodePropertyimplementsSerializable9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString NODE_TABLE="Table";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString NODE_COLUMNS="Columns";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString NODE_COLUMN="Column";

d18c02628675d0a2c816449d98bda930.png    

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_NAME="Name";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_ID="Id";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_DESCRIPT="Descript";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_G="G";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_P="P";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_COMMENT="Comment";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_DATATYPE="DataType";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_MANDATORY="Mandatory";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_UNSIGNED="Unsigned";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_PRIMARYKEY="isPrimaryKey";

d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalString PROPERTY_LENGTH="Length";

d18c02628675d0a2c816449d98bda930.png    

d18c02628675d0a2c816449d98bda930.pngprivateString type=null;

d18c02628675d0a2c816449d98bda930.pngprivateListchild=null;

d18c02628675d0a2c816449d98bda930.pngprivateMapproperty=null;

d18c02628675d0a2c816449d98bda930.pngprivateString value=null;

d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifprivateNodeProperty()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.child=newArrayList();

d18c02628675d0a2c816449d98bda930.pngthis.property=newHashtable();

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidaddChild(NodeProperty fp)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        child.add(fp);

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicListgetChild()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturnchild;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidaddProperty(String key, String value)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        property.put(key, value);

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString getProperty(String key)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturnproperty.get(key);

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicstaticNodeProperty getInstance(String type)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        NodeProperty xml=newNodeProperty();

d18c02628675d0a2c816449d98bda930.png        xml.setType(type);

d18c02628675d0a2c816449d98bda930.pngreturnxml;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString getValue()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturnvalue;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsetValue(String value)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.value=value;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString getType()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturntype;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsetType(String type)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.type=type;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString toXML()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        StringBuilder sb=newStringBuilder();

d18c02628675d0a2c816449d98bda930.png        sb.append("

d18c02628675d0a2c816449d98bda930.png        Iterator>it=property.entrySet().iterator();

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifwhile(it.hasNext())9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            sb.append("");

d18c02628675d0a2c816449d98bda930.png            Entrye=it.next();

d18c02628675d0a2c816449d98bda930.png            sb.append(e.getKey()).append("=\"").append(e.getValue())d18c02628675d0a2c816449d98bda930.png.append("\"");ecedf933ec37d714bd4c2545da43add2.png}97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(child.size()>0)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            sb.append(">\n");

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giffor(NodeProperty node : child)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                sb.append(node.toXML());

ecedf933ec37d714bd4c2545da43add2.png            }d18c02628675d0a2c816449d98bda930.png            sb.append("\n").append(type).append(">");

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif        }else9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            sb.append("/>");

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.pngreturnsb.toString();

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/** *//**d18c02628675d0a2c816449d98bda930.png     * 获取当前节点中指定类型的子节点

d18c02628675d0a2c816449d98bda930.png     *@paramtype

d18c02628675d0a2c816449d98bda930.png     *@returnecedf933ec37d714bd4c2545da43add2.png*/97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicNodeProperty getChildByType(String type)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png        NodeProperty result=null;

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(this.child.size()>0)9b8a8a44dd1c74ae49c20a7cd451974e.png{

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giffor(NodeProperty np : child)9b8a8a44dd1c74ae49c20a7cd451974e.png{

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(np.getType().equals(type))9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png                    result=np;

ecedf933ec37d714bd4c2545da43add2.png                }ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.pngreturnresult;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidremoveChild()9b8a8a44dd1c74ae49c20a7cd451974e.png{

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifif(child.size()>0)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngintsize=child.size();

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giffor(inti=0; i{

d18c02628675d0a2c816449d98bda930.png                child.remove(0);

ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        }ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString toString()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturnthis.getProperty(PROPERTY_NAME)==null?"": getProperty(PROPERTY_NAME);

ecedf933ec37d714bd4c2545da43add2.png    }8f1ba5b45633e9678d1db480c16cae3f.png}

下面看一下在dbdesigner的运行效果:

7318683910851ab0869e76ad478a5ba4.png

dc7083e8c272a112aadfaf374e751ba1.png

添加数据库连接

b296350b7f6e30feb758fa026851e9d2.png

50e6210589e989170e098bb2f4d1d1cf.png

22fdab8200ccc6302f4820b5f053759c.png

8168e8c8927f37e12667bf7f0c43366a.png

//生成的实体类效果

4f1150b881333f12a311ae9ef34da474.pngpackagecom.penngo.model;

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.pngimportjava.io.Serializable;

4f1150b881333f12a311ae9ef34da474.pngimportjavax.persistence.*;

4f1150b881333f12a311ae9ef34da474.pngimportjava.math.BigInteger;

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png@Entity

4f1150b881333f12a311ae9ef34da474.png@Table(name="jbpm4_deployment")

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassJbpm4_deploymentimplementsSerializable9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngprivatestaticfinallongserialVersionUID=1L;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png    @Id

d18c02628675d0a2c816449d98bda930.png    @Column(name="DBID_")

d18c02628675d0a2c816449d98bda930.pngprivateBigInteger dbid_;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png    @Column(name="NAME_")

d18c02628675d0a2c816449d98bda930.pngprivateString name_;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png    @Column(name="TIMESTAMP_")

d18c02628675d0a2c816449d98bda930.pngprivateBigInteger timestamp_;

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png    @Column(name="STATE_", length=255)

d18c02628675d0a2c816449d98bda930.pngprivateString state_;

d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicBigInteger getDbid_()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturndbid_;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsetDbid_(BigInteger dbid_)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.dbid_=dbid_;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString getName_()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturnname_;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsetName_(String name_)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.name_=name_;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicBigInteger getTimestamp_()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturntimestamp_;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsetTimestamp_(BigInteger timestamp_)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.timestamp_=timestamp_;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString getState_()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturnstate_;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsetState_(String state_)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.state_=state_;

ecedf933ec37d714bd4c2545da43add2.png    }8f1ba5b45633e9678d1db480c16cae3f.png}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值