qiudaifei 2019-07-02 16:41 采纳率: 0%
浏览 206

java多数据库建表,字段操作,注释操作

项目上有功能,需求是可以在页面录入数据(表名,字段名类型,注释等),实现在数据库创建相应的表。使用hibernate框架。目前需求是要实现多数据库支持,而且不能修改代码。
求好的解决方案!比如hibernate方言是否支持建表之类的ddl语言,这样就不需要写配置文件了。

        求好的解决方案
  • 写回答

1条回答

  • 憧憬blog 2023-03-15 06:02
    关注

    对于这个需求,可以使用 Hibernate 的动态建表(Dynamic Table Creation)功能来实现在不修改代码的情况下,在多个数据库中创建表。Hibernate 的方言(Dialect)是支持建表DDL语言的,可以根据不同的数据库类型选择不同的方言实现动态建表。

    具体的做法是,在代码中使用 Hibernate 的 SchemaExport 类,结合方言对象和 Configuration 对象,可以动态生成建表DDL语句,然后使用 JDBC API 执行这些语句,从而实现创建表的功能。

    示例代码如下:

    Configuration config = new Configuration();
    // 配置表名、字段名和类型
    config.addClass(TableEntity.class)
        .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect")
        .setProperty("hibernate.show_sql", "true");
    
    // 根据方言生成建表DDL语句
    SchemaExport schemaExport = new SchemaExport(config);
    schemaExport.setDelimiter(";");
    schemaExport.setOutputFile("schema.sql");
    schemaExport.execute(true, false, false, true);
    
    // 使用 JDBC API 执行建表DDL语句
    Connection conn = dataSource.getConnection();
    ScriptUtils.executeSqlScript(conn, new ClassPathResource("schema.sql"));
    

    此外,可以通过在页面录入数据时,将相应的表名、字段名和类型等信息保存在配置文件中,然后动态读取配置文件内容实现动态建表。

    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多