zoukankan      html  css  js  c++  java
  • 数据库表结构上下文

    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<String,tableInfo>  tables = new HashMap<String,tableInfo>();
        
        /**
         * 
         */
        public static  Map<Class,tableInfo>  poClassTableMap = new HashMap<Class,tableInfo>();
        
        
        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<String, columnInfo>() ,new ArrayList<columnInfo>());
                    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<String,tableInfo>  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);
            }
            }
        
        
        
    
    }
  • 相关阅读:
    前端使用canvas生成盲水印的加密解密
    html2canvas使用心得
    前端开发超好用的截图、取色工具——snipaste
    js识别中英文字符的字节长度并进行裁切
    运用CSS3媒体查询判断iPhoneX、iPhoneXR、iPhoneXS MAX及横竖屏
    webpack4学习笔记
    VUE打包发布后无法访问js、css资源
    IOS微信6.7.4输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置
    移动端浏览器预览word、excel、ppt
    js为页面元素添加水印
  • 原文地址:https://www.cnblogs.com/helloMyworld0001/p/5972966.html
Copyright © 2011-2022 走看看