如何使用JDBC / Hibernate基于用户输入数据生成“创建表”查询?

时间:2017-04-17 12:36:46

标签: java hibernate jdbc

假设我们在csv文件中提供查询数据,如下所示:

Emp_Id, Emp_Name, Address

现在,应该生成并处理下面的查询(Mysql)。

Create TABLE Emp_tbl(
   Emp_id INT NOT NULL,
   Emp_Name VARCHAR(100) NOT NULL,
   Address VARCHAR(400) NOT NULL,
   PRIMARY KEY ( Emp_id )
);

先谢谢!!

1 个答案:

答案 0 :(得分:0)

你可以通过jdbc实现它:

String sql_stmt = "Create TABLE Emp_tbl(
   Emp_id INT NOT NULL,
   Emp_Name VARCHAR(100) NOT NULL,
   Address VARCHAR(400) NOT NULL,
   PRIMARY KEY ( Emp_id )
);";

public void createTable(String sql_stmt) throws SQLException {

    // your connection code
    statement = connection.createStatement();

    statement.executeUpdate(sql_stmt);
}

同样here是关于在hibernate中动态创建表的地图:

  

它可以动态完成,但有些混乱:

     

您需要动态更改Hibernate的Configuration对象   在构建SessionFactory之前。如果你使用的是Spring,那就可以了   通过重写postProcessAnnotationConfiguration()方法来完成   AnnotationSessionFactoryBean;否则你只需要这样做   在调用之前使用Configuration对象   它上面有buildSessionFactory()。

     

如果您需要在没有重启应用程序的情况下执行此操作,那么您正在查看   要么重建你的SessionFactory(这意味着你的用户会   必须等到完成)或使用单独的SessionFactory   专门用于您的自定义类的实例(下一个   如果你的自定义类需要引用你的内置函数是不可能的   类)。

     

您可以通过访问类/表映射   configuration.getMappings()。然后,您需要创建一个新表   通过Table API进行映射,并通过addTable()将其添加到配置中。相同   必须用代表a的PersistentClass来完成   类映射。如果您使用相同的类来表示多个   实体(例如映射多个表)确保使用唯一实体   每个人的名字。你必须这样做(改变配置)   每个应用重启。