• 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;
    }
  • 相关阅读:
    【转】使用Javascript改变HTML内容 拓荒者
    【转】ASP.NET MVC 过滤器Filter 拓荒者
    【转】JavaScript简介 拓荒者
    edge.js架起node.js和.net互操作桥梁
    利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm
    nodejs上HTML分析利器nodejquery
    JavaScript 函数replace揭秘
    利用Node.js本地构建
    Angularjs的IOC Inject分析
    团队文化中的害群之马
  • 原文地址:https://www.cnblogs.com/shihx/p/13410655.html
Copyright © 2020-2023  润新知