zoukankan      html  css  js  c++  java
  • hibernate根据包名获取该包下实体类,数据库中不存在的库表名称


    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.supermap.realestate_bh.registration.util.StringUtil;
    import com.supermap.wisdombusiness.core.SuperSpringContext;
    import com.supermap.wisdombusiness_bh.framework.dao.impl.CommonDao;
    import org.hibernate.SessionFactory;
    import org.springframework.orm.hibernate4.SessionFactoryUtils;

    import javax.persistence.Table;
    import java.io.File;
    import java.io.IOException;
    import java.net.URL;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.ResultSet;
    import java.util.HashSet;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Set;

    public static Set getTableNotExits(){
    try {
    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    String packagename = "com.supermap.realestate.registration.model";
    packagename = "";
    String packagePath = packagename.replaceAll("\.", "\/");
    URL url = loader.getResource(packagePath);
    String path = url.getPath();
    File file = new File(path);
    File[] files = file.listFiles();
    List list = new LinkedList<>();
    Set<String> stringSet = new HashSet<>();
    for (File file1 : files) {
    if(file1.isDirectory()) continue;
    String filename = file1.getName();
    String name = packagename + "." + filename.replace(".class","");
    System.out.println(name);
    Class cl = Class.forName(name);
    if(cl.isAnnotationPresent(Table.class)){
    Table table = (Table)cl.getAnnotation(Table.class);
              //指定数据库/用户
    if("bdcdck".equalsIgnoreCase(table.schema())) stringSet.add(table.schema() + "&" + table.name());
    }
    list.add(packagename + "." + file1.getName());

    }

    SessionFactory object = SuperSpringContext.getContext().getBean(CommonDao.class).getSessionFactory();
    Connection connection = SessionFactoryUtils.getDataSource(object).getConnection();
    DatabaseMetaData databaseMetaData = connection.getMetaData();
    Set<String> set = new HashSet<>();
    for (String s : stringSet) {
    if(StringUtil.isEmpty(s)) continue;
    String[] ss = s.split("&");
    ResultSet rs = databaseMetaData.getTables(null,ss[0].toUpperCase(),ss[1].toUpperCase(),new String[]{"TABLE"});
    if(!rs.next()){
    set.add(s);
    }
    }

    return set;
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }
  • 相关阅读:
    Python自定义web框架、Jinja2
    Django初探(模板渲染、模板语音、simple_tag、母版子版、静态配置文件)
    多线程 threading
    python操作mysql
    sql 汉字转首字母拼音
    添加sql server约束
    NFS,Memcached,Tokyo tyrant实现session共享性能测试
    让Editplus自动格式化js、css、html。。。
    sql server中利用sql语句如何创建角色和用户
    asp网站文件夹权限设置
  • 原文地址:https://www.cnblogs.com/shihx/p/13410655.html
Copyright © 2011-2022 走看看