博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库表结构上下文
阅读量:6444 次
发布时间:2019-06-23

本文共 2504 字,大约阅读时间需要 8 分钟。

package som.gu.core;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import com.gu.bean.columnInfo;import com.gu.bean.tableInfo;import com.gu.utils.StringUtils;import com.gu.utils.javaFieldUtils;/** * 负责获取管理数据库所有表结构和类结构的关系,并可以根据表结构生成类结构。 * @author  * */public class tableContext {    /**     * 表名为key,表信息对象为value     */    public static  Map
tables = new HashMap
(); /** * */ public static Map
poClassTableMap = new HashMap
(); private tableContext(){} static { try { //初始化获得表的信息 Connection con = DBManager.getConnect(); DatabaseMetaData dbmd = con.getMetaData(); ResultSet tableRet = dbmd.getTables(null, "%","%",new String[]{"TABLE"}); while(tableRet.next()){ String tableName = (String) tableRet.getObject("TABLE_NAME"); tableInfo ti = new tableInfo(tableName,new HashMap
() ,new ArrayList
()); tables.put(tableName, ti); ResultSet set = dbmd.getColumns(null, "%", tableName, "%"); while(set.next()){ columnInfo ci = new columnInfo(set.getString("COLUMN_NAME"), set.getString("TYPE_NAME"), 0); ti.getColumns().put(set.getString("COLUMN_NAME"), ci); } ResultSet set2 = dbmd.getPrimaryKeys(null, "%", tableName); while(set2.next()){ columnInfo ci2 = (columnInfo) ti.getColumns().get(set2.getObject("COLUMN_NAME")); ci2.setKeyType(1); ti.getPriKeys().add(ci2); } if(ti.getPriKeys().size()>0){ ti.setOnlyPriKey(ti.getPriKeys().get(0)); } } } catch (SQLException e) { e.printStackTrace(); } } /** * 根据数据库表结构生成类结构 */ public static void updateJavaPoFile(){ Map
tables=tableContext.tables; for(tableInfo table:tables.values()){ javaFieldUtils.creatJavaPoFile(table,new MysqlTypeConvertor()); } } /** * 将po的class对象和表信息对象关联起来,便于重用! */ public static void LoadPoTables(){ /*Class c=Class.forName(""); poClassTableMap.put(key, value)*/ for(tableInfo table:tables.values()){ Class c=null; try { c = Class.forName(DBManager.getPoPackage()+"."+StringUtils.firstChar2uppercase(table.gettName())); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } poClassTableMap.put(c,table); } } }

 

转载于:https://www.cnblogs.com/helloMyworld0001/p/5972966.html

你可能感兴趣的文章
Webserver管理系列:3、Windows Update
查看>>
Linux内核源码详解——命令篇之iostat[zz]
查看>>
Sqlserver2000联系Oracle11G数据库进行实时数据的同步
查看>>
duplicate命令创建physical standby数据库报RMAN-03015 ORA-17628
查看>>
明年计划
查看>>
ORACLE功能GREATEST功能说明具体实例
查看>>
unity, particle play once and destroy
查看>>
hadoop job解决大数据量关联时数据倾斜的一种办法
查看>>
windows配置nginx实现负载均衡集群
查看>>
摄像机知识
查看>>
小tip:纯CSS让overflow:auto页面滚动条出现时不跳动
查看>>
Linq Like
查看>>
Linux知识积累(4) Linux下chkconfig命令详解
查看>>
centos关机与重启命令
查看>>
[Eth]Mac/Phy/mdio/Rgmii
查看>>
C++中的函数指针和函数对象总结
查看>>
ELK学习总结(3-2)elk的过滤查询
查看>>
快速定位oracle故障-恩墨
查看>>
Redis可视化工具 Redis Desktop Manager
查看>>
Go基础系列:为select设置超时时间
查看>>