基于JavaFX的数据库字段注释工具

目录

起因

功能介绍

基本使用

 跳转

默认值

原理

源码地址


起因

一般公司都会要求给数据库表加备注,便于其他同事合作开发,以及方便测试人员测试。

有的人可能喜欢先设计表结构,再逆向的生成实体类(Entity)。通过powerdesign等工具设计表的时候,可以顺带把字段的备注给加上,所以后期不需要单独加注释。

但是也有人喜欢先考虑类的结构,再考虑数据的存储。即先有实体类,再根据实体类创建对应的数据库表。这个时候写备注就比较痛苦了,需要通过一些可视化工具一张表一张表地加。

现有的一些可视化工具(例如navicat)加注释并不方便,所以自己做了个小工具用于解决“加注释难”这个问题。

功能介绍

基本使用

注意:字段名 = 表名 + 字段名

第一步:选择需要加注释的数据库

第二步:修改备注

按回车键后提交结果,并将焦点移动至下一行

点击回车后继续编辑。

到最后一行时,如果点击回车会自动跳转到下一页。

 在加注释的过程中,就无需点击鼠标切换表了,提高了效率。

 跳转

如果哪一次备注中断了,可以记录一下页数,下一次使用时跳转到指定页即可。

默认值

 有一些字段,例如createTime表示创建时间,updateTime表示更新时间。这些比较明确的字段,可以通过设置默认值,避免重复输入。

目前是通过代码配置的,如果后续这个软件有人用的话,我再改成通过文件配置。

 设置默认之后,如果输入值为空,直接敲回车,可以填充默认的注释。

例如上述的createTime未输入任何值,敲回车后显示如下。

原理

mysql中没有单独修改字段注释的方式,只能通过“alter table..........modify column ”语句在修改表结构的同时,修改备注。

使用alter table时,如果没带上某些定义信息,则空信息会覆盖之前的定义,导致表结构发生了变化。但修改表的结构并不是我们的初衷,我们只想改个注释。

所以大概思路如下:

1、通过 information_schema.COLUMNS表获取某个字段的所有定义信息,抽象为一个类

ColumnInfo

public class ColumnInfo {
    /**标识符号,表名+字段名组成**/
    private String identify;
    /**列名**/
    private String columnName;
    /**表名**/
    private String tableName;
    /**数据库名**/
    private String dbName;
    /**在表中的顺序**/
    private int position;
    /**是否可以为null**/
    private boolean nullable;
    /**默认值**/
    private String defaultValue;
    /**字段类型**/
    private String columnType;
    /**字符集**/
    private String characterSet;
    /**排序规则**/
    private String collationName;
    /**PRI,代表主键,UNI,代表唯一键,MUL,可重复**/
    private String indexType;
    /**额外信息,例如自增、根据时间戳更新等**/
    private String extra;
    /**备注**/
    private String comment;
}

 2、修改备注时带上所有的定义信息

private String buildColumnSql(ColumnInfo columnInfo) {
        StringBuilder sqlBuilder = new StringBuilder();
        sqlBuilder.append("alter table ").append(columnInfo.getDbName()).append(".").append(columnInfo.getTableName())
                .append(" modify column ").append(columnInfo.getColumnName()).append(" ").append(columnInfo.getColumnType());

        if (!columnInfo.isNullable()) {
            sqlBuilder.append(" not null ");
        }

        if (!StringUtils.isBlank(columnInfo.getDefaultValue())) {
            sqlBuilder.append(" default ").append(columnInfo.getDefaultValue());
        }

        if (!StringUtils.isBlank(columnInfo.getExtra())) {
            sqlBuilder.append(" ").append(columnInfo.getExtra()).append(" ");
        }

        if (!StringUtils.isBlank(columnInfo.getComment())) {
            sqlBuilder.append(" comment ").append("\"").append(columnInfo.getComment()).append("\"");
        }
        return sqlBuilder.toString();
    }

 其实navicat也是通过这种方法来实现的。

给name字段加一个注释,“姓名”。点击保存后,查看navicat sql执行日志

 可以看到在修改备注的同时,也会带上这个其他的定义信息。

源码地址

小工具的源码地址如下

源码地址icon-default.png?t=M0H8https://github.com/DayRain/fx-tools

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在JavaFX应用程序中连接数据库,可以使用Java Database Connectivity(JDBC)API。以下是一个简单的示例,该示例使用MySQL数据库: 1. 首先需要下载并安装MySQL数据库,并创建一个数据库以供测试。 2. 接下来需要下载并导入MySQL JDBC驱动程序。可以从MySQL官方网站下载MySQL Connector/J驱动程序。 3. 在JavaFX应用程序中,需要在代码中导入MySQL JDBC驱动程序。可以使用以下代码: ```java Class.forName("com.mysql.jdbc.Driver"); ``` 4. 然后需要创建一个数据库连接。可以使用以下代码: ```java Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "username", "password"); ``` 其中,localhost:3306是数据库的主机名和端口号,database_name是要连接的数据库名称,username和password是连接数据库所需的用户名和密码。 5. 现在可以使用该连接执行SQL查询和更新。例如,可以使用以下代码查询和打印数据库中的所有行: ```java Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM table_name"); while (rs.next()) { System.out.println(rs.getString("column_name")); } ``` 注意:在使用完数据库连接后,需要将其关闭。可以使用以下代码关闭连接: ```java conn.close(); ``` 以上是连接MySQL数据库的示例代码。如果要连接其他类型的数据库,请根据相应的驱动程序和连接字符串进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值