精华内容
下载资源
问答
  • 经常会遇到一些管理后台,需要详细的记录每次操作更新的内容,具体到字段,以及修改前修改后的内容;利用反射写了一个通用工具类定义一个简单的PO:@Data@NoArgsConstructorpublic class SimplePO {@Record(name = ...

    经常会遇到一些管理后台,需要详细的记录每次操作更新的内容,具体到字段,以及修改前修改后的内容;

    利用反射写了一个通用工具类

    定义一个简单的PO:

    @Data

    @NoArgsConstructor

    public class SimplePO {

    @Record(name = "唯一键")

    private Integer id;

    @Record(name = "名字")

    private String name;

    @Record(isRecord = false)

    private String desc;

    }

    字段注解,能够有针对性的记录字段内容:

    @Target(ElementType.FIELD)

    @Retention(RetentionPolicy.RUNTIME)

    @Inherited

    @Documented

    public @interface Record {

    boolean isRecord() default true;

    String name() default "";

    }

    工具类:

    public class RecordUtil {

    public String record(Class clazz,T newObj,T oldObj) throws IllegalAccessException {

    if(oldObj.equals(newObj)){

    return "";

    }

    StringBuffer sb = new StringBuffer();

    Field[] fields = clazz.getDeclaredFields();

    for(Field field : fields){

    field.setAccessible(true);

    boolean isHasAnnotation = field.isAnnotationPresent(Record.class);

    if( !isHasAnnotation ){

    continue;

    }

    Record record = field.getAnnotation(Record.class);

    if(!record.isRecord()){

    continue;

    }

    if(field.get(oldObj) == field.get(newObj)){

    continue;

    }

    if(field.get(oldObj) != null){

    String oldValue = String.valueOf(field.get(oldObj));

    String newValue = String.valueOf(field.get(newObj));

    String name = record.name();

    String fieldName = field.getName();

    if( !oldValue.equalsIgnoreCase(newValue)){

    sb.append(name).append("(").append(fieldName).append(")").append("修改前:").append(oldValue).

    append(" 修改后:").append(newValue).append("\n");

    }

    }else {

    String newValue = String.valueOf(field.get(newObj));

    String name = record.name();

    String fieldName = field.getName();

    sb.append(name).append("(").append(fieldName).append(")").append("修改前:").append("null").

    append(" 修改后:").append(newValue).append("\n");

    }

    }

    System.out.printf(sb.toString());

    return sb.toString();

    }

    测试用例:

    public static void main(String[] args) {

    try {

    SimplePO newPO = new SimplePO();

    newPO.setId(1);

    newPO.setName("测试");

    newPO.setDesc("星期一");

    SimplePO oldPO = new SimplePO();

    oldPO.setId(2);

    oldPO.setName("上线");

    oldPO.setDesc("星期二");

    System.out.printf("test");

    RecordUtil recordUtil = new RecordUtil<>();

    recordUtil.record(SimplePO.class,newPO,oldPO);

    System.out.printf("执行到这了");

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    测试结果:

    唯一键(id)修改前:2 修改后:1

    名字(name)修改前:上线 修改后:测试

    展开全文
  • 主要用于做MS SQL Server数据库软件项目,该字典工具,包含现在网上所有“数据库文档生成器”、“数据库浏览器”之类的所有功能,可以轻松的对数据库里的所有表、视图、存储过程、触发器的字段和脚本信息进行管理,...
  • asp在线数据库管理工具 sql、access在线数据库管理工具 您的电脑无须安装access查看器就能轻松在线管理数据库。 可对数据库进行追加、修改、删除等sql数据库操作,简单方便,数据实时操作。 由于微软默认提供的企业...
  • 基于Springboot开发的数据库管理工具。 可在线查询数据库及其字段信息 完美执行DDL\DML语句,语句有修正功能 无权限等功能,可轻易移植于其他平台。 异步执行,性能强劲
  • 任何web软件和应用程序都需要强大的数据库管理工具,因此开发者选择一款合适的数据库管理工具尤为重要。本文列出了几款好用的数据库管理工具(有些并非开源或免费),以供开发者们参考选择:phpMyAdmin是一个非常受...

    任何web软件和应用程序都需要强大的数据库管理工具,因此开发者选择一款合适的数据库管理工具尤为重要。本文列出了几款好用的数据库管理工具(有些并非开源或免费),以供开发者们参考选择:

    phpMyAdmin是一个非常受欢迎的基于web的MySQL数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等。

    缺点:SQL语法不高亮

    Navicat是一套快速、可靠并价格相宜的资料库管理工具,大可使用来简化资料库的管理及降低系统管理成本。它的设计符合资 料库管理员、开发人员及中小企业的需求。 Navicat是以直觉化的使用者图形介面所而建的,让你可以以安全且简单的方式建立、组织、存取并共用资讯。Navicat 支持的数据库包括 MySQL、Oracle、SQLite、PostgreSQL 和 SQL Server 等。

    Navicat 提供商业版 Navicat Premium 和 免费的版本 Navicat Lite 。但目前 Navicat 已不再提供 LITE 版本。

    缺点:免费版本已停止更新。

    DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库。DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。

    MySQL Workbench是数据库架构师和开发人员的可视化数据库设计、管理的工具,它是著名的数据库设计工具DBDesigner4的继任者。你可以用MySQL Workbench设计和创建新的数据库图示,建立数据库文档。它同时有开源和商业化的两个版本。可以在Windows,Linux和MAC OS X上使用。

    它在2016年十月份成为一个稳定的工具。

    缺点:比 phpMyAdmin 更复杂。

    Sequel Pro 的原名是CocoaMySQL,是一个与phpMyAdmin相像的MySQL管理工具。它是由Cocoa和面对对象的C(Mac OSX)编写的。Sequel Pro允许你编辑数据库,表格(字段和索引)和列,执行个性化查找和导入导出数据。

    缺点:不适用于其他系统。

    webcat是一个java版的web数据库管理工具,核心功能包括数据库的创建、编辑、sql分析、代码生成、数据备份等。 目前一期功能已开发完毕,所涉及到的功能我基本都已经测试通过,稳定版本为1.0.0.5。 接下来会继续完善一期功能,部分代码会重构,增加一些使用者提出的功能。 因此在此期间暂时关闭fork,待新版本开发完成并稳定之后再开放。代码会持续更新,敬请关注。 QQ群:341624652 有问题或者新需求请到QQ群反馈. 安装部署请参见下方。

    SQLiteStudio 是一个跨平台的 SQLite 数据库的管理工具,采用 Tcl 语言开发。

    主要特性:便携性 - 无需安装和卸载,下载解压即可使用

    界面直观

    功能强大,同时保持轻量级而且快速

    通过简单的 GUI 封装了所有 SQLite3 及 SQLite2 的功能

    支持跨平台 包括 Windows 9x/2k/XP/2003/Vista/7, Linux, MacOS X

    支持导出各种格式数据 (SQL statements, CSV, HTML, XML, PDF, JSON),

    支持导入各种格式数据(CSV, 自定义文本文件[正则表达式]),

    额外的小功能,包括代码格式化,查询历史记录,语法检查等等

    支持 Unicode ,

    支持换肤

    可配置的颜色、字体和快捷方式

    Oracle SQL Developer 是一个免费非开源的用以开发数据库应用程序的图形化工具,使用 SQL Developer 可以浏览数据库对象、运行 SQL 语句和脚本、编辑和调试 PL/SQL 语句。另外还可以创建执行和保存报表。该工具可以连接任何 Oracle 9.2.0.1 或者以上版本的 Oracle 数据库,支持 Windows、Linux 和 Mac OS X 系统。

    HeidiSQL 是一个功能非常强大的数据库客户端软件,采用 Delphi 开发,支持 Windows 操作系统。支持 MySQL、MariaDB、Percona Server 和微软的 SQL Server。

    当然,优秀的数据库管理工具还有很多,欢迎在评论区补充,以供更多开发者学习和交流。

    展开全文
  • 数据库版本管理工具-flyway

    千次阅读 2017-02-08 09:51:13
    在日常开发中,经常遇到数据库变更,字段增减调整,需要维护多个不同数据库时是十分痛苦的事情.代码可以使用svn,git等工具进行管理,那么数据库的版本可以使用Flyway 一款小工具,就可以大大简化这方面的工作。

    909492228223898008.jpg

    写在前面

    在日常开发中,经常遇到数据库变更,字段增减调整,需要维护多个不同数据库时是十分痛苦的事情.代码可以使用svn,git等工具进行管理,那么数据库的版本可以使用Flyway 一款小工具,就可以大大简化这方面的工作。官方网站

    介绍

    flyway支持大部分主流的数据库,Oracle,SQL Server MySQL等;
    并且拥有命令行工具,Maven,Gradle插件等;
    配置简单,实用方便,支持Sql及java配置,这里写一个简单的java配置。

    需要明白的几个概念:

    • 版本:对数据库的每一次变更可称为一个版本。
    • 迁移:Flyway把数据库结构从一个版本更新到另一个版本叫做迁移。
    • 可用的迁移:Flyway的文件系统识别出来的迁移版本。
    • 已经应用的迁移:Flyway已经对数据库执行过的迁移。

    使用

    • 需要使用Flyway核心jar包;可直接下载flyway-core-3.2.1.jar
    • 在项目中创建文件夹 src/dbmigration, 默认src/db/migration,可以在配置中进行修改。
    • 对Flyway进行数据库配置,这里使用spring配置文件配置,也可以使用java对象进行配置,
    <bean id="flyway" class="org.flywaydb.core.Flyway" init-method=”migrate”>
      <property name=”dataSource” ref=”dataSource” /> <!--数据源-->
      <property name=”locations” value=”dbmigration”/> <!--脚本文件夹地址 默认src/db/migration-->
      <property name=”validateOnMigrate” value=”false”/> <!--迁移验证 默认true-->
      <property name=”baselineOnMigrate” value=”true”/> <!--基线迁移 默认false-->
      <property name=”placeholderPrefix” value=”ignore”/> <!--占位符前缀-->
      <property name=”outOfOrder” value=”false”/> 
    </bean>
    
    <bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean” depends-on=”flyway”> <!--建立前置依赖-->
      <property name=”configLocation” value=”classpath:/conf/configuration.xml”/> 
      <property name=”dataSource” ref=”dataSource” /> <!--数据源-->
    </bean>

    然后,就完成了简单配置了,在dbmigration文件夹下创建sql文件,比如:V1_0_1__初始化.sql,V1_0_2__修改表.sql等,其中sql脚本文件需要按照一定的规则来命名,能够让flyway检测并执行。

    命名规则也能进行定义比如prefix、separator、suffix,默认prefix是V(执行一遍,并且版本号唯一,如果有重复就会报错)或R(重复执行,不需要版本号),separator是双下划线__,suffix是.sql。V开头+版本号+双下划线+描述。

    新版本更改脚本,版本数字大于之前的版本就可以了。

    注意

    在启动tomcat启动后 加载配置文件运行flyway组件 对数据库版本更新,它在维护更新时会在数据库中新建表 schame_version 用来对sql脚本版本升级进行维护,一份sql文件对应一条数据,所以对数据库版本升级时,会根据该表查询进行操作,如果没有记录,则会执行该sql文件,如果存在数据则不执行,在对当前数据库中sql脚本只会执行一次,

    如果出现异常例如:org.flywaydb.core.api.FlywayException: Schema “xxx” contains a failed migration to version 1.1.043 !则表示数据库冲突,需要把表 schame_version 相应记录删除,并且保证sql脚本操作不会与该数据库冲突。每次版本更新 schame_version 都会保存运行的结果。

    展开全文
  • 能够列出所有的字段信息,便于对照,一般的工具里只提供表与字段的关系,不能列出针对字段的查询处理.6.一般数据库中,同一个字段名可能在多张表里使用,大部分情况下,其类型,长度,备注基本一致.但是设计的时候往往会疏忽...
  • 我记得第一个项目进行字段管理的时候是将自己的脚步拿出来放到项目某个文件夹下面,如果结构变了告诉其他同事拉下来之后执行下脚本文件。还有一种方式是改完之后告诉其他人哪个表字段做了改动,脚本都没放,这种方式...

    在团队开发当中,有可能每个人都是使用自己本地的数据库。当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新。我记得第一个项目进行字段管理的时候是将自己的脚步拿出来放到项目某个文件夹下面,如果结构变了告诉其他同事拉下来之后执行下脚本文件。还有一种方式是改完之后告诉其他人哪个表字段做了改动,脚本都没放,这种方式也使用过···

    Flyway数据库版本迁移工具可以解决该问题。每当我们更新数据库的时候,只需要添加SQL文件到指定目录中。

    Flyway的流程大概是在数据库创建一个表,专门记录已更新的SQL文件。当我们下次执行时则不会执行已记录并且执行成功的SQL文件,如果没有执行过sql脚本会执行脚本并且记录到自己的表中。这种方式对开发、对线上系统的升级就非常方便了。当然flyway还有其他非常方便的功能,都是可以配置的。

    而且我记得之前在一个项目是mybatisPlus些的,为了便于建表还引入了JPA进行建表,其实用flyway也可以,放一个初始化脚步,系统启动的时候自动执行脚步即可。

    flyway使用可以命令行、Java、Maven等,也和spring做了整合。下面研究在springboot项目中的使用。

    1. pom引入相关依赖

    org.flywaydb

    flyway-core

    6.3.3

    2.application配置

    # FLYWAY (FlywayProperties)

    spring.flyway.url = jdbc:mysql://127.0.0.1:3306/media?useUnicode=true&characterEncoding=UTF-8

    spring.flyway.user = root

    spring.flyway.password = 123456

    # 存放flyway信息的表

    spring.flyway.table = flyway_schema_history

    spring.flyway.enabled = true

    # 存放数据库脚本的位置

    spring.flyway.locations = classpath:db/migration

    spring.flyway.clean-disabled = false

    spring.flyway.baseline-on-migrate = true

    # 允许乱序执行

    spring.flyway.out-of-order= true

    # 前缀后缀

    spring.flyway.sql-migration-prefix=V

    spring.flyway.sql-migration-separator=__

    spring.flyway.validate-on-migrate=false

    上面配置了数据库连接信息;

    spring.flyway.table 指定存放flyway记录版本信息的表;

    spring.flyway.locations 指定存放脚本文件的位置。classpath在boot项目中就是resources目录

    sql-migration-prefix和sql-migration-separator指定版本前缀和版本号和描述的分隔符

    3. 建立sql文件

    这里说明下sql文件的命名。V版本号__描述.sql  版本号默认是1 (注意这里的下划线是两个),而且版本号不能重复。描述就是你本次sql改动是做什么了简单说明下。

    4.启动项目自动建表

    启动项目可以看到自动建的表。

    test是从脚本中读出来的,flyway_schema_history是flyway运行自身所需要的表,用于记录处理过的数据表。查看数据如下:

    5.执行第二个SQL

    如果这时候你想删掉test表,你删掉表   V20201106001__创建test表.sql  是没用的,因为flyway已经处理过该文件,不会进行处理。解决办法就是加一个文件做一个逆向的操作。如下:

    在db/migration目录下新建第二个SQL文件,名称为: V20201106002__删除test表.sql ,内容如下:

    drop table test

    启动项目让flyway执行脚本。

    再次查看数据表test已经删除

    查看flyway_schema_history表的数据如下:

    补充:flyway 脚本执行失败的话会导致服务启动失败,success 为 0 的时候,修改正确之后不会重新加载脚本,需要删掉flyway记录表的那条数据。

    展开全文
  • 代码可以使用svn,git等工具进行管理,那么数据库的版本可以使用Flyway 一款小工具,就可以大大简化这方面的工作。官方网站介绍flyway支持大部分主流的数据库,Oracle,SQL Server MySQL等;并且拥有命令行工具,...
  • 管理SQL Server 2000/2003/2005数据库信息,方便快捷管理每个数据库字段和数据字典...
  • asp在线数据库管理工具 v1.0,asp在线数据库管理工具,系统可以支持sql、access在线数据库管理工具,您的电脑无须安装access查看器就能轻松在线管理数据库。可对数据库进行追加、修改、删除等sql数据库操作,简单...
  • IDEA是自带数据库管理工具的,类似于一个小型Navicat。这个工具可以让我们平时的一些对数据的操作直接在 IDEA 就可以完成,不需要再切换到其他工具上。对于TDengine来说,用户可以通过JDBC驱...
  • 任何web软件和应用程序都需要强大的数据库管理工具,因此开发者选择一款合适的数据库管理工具尤为重要。本文列出了几款好用的数据库管理工具(有些并非开源或免费),以供开发者们参考选择:phpMyAdmin是一个非常受...
  • 文章目录1. 概述2. 过程2.1 问题出现2.2 刷新、事务提交尝试2.3 检查SQL2.4 验证是否导航栏的表信息没更新3. 总结4....工具:DM管理工具(达梦自带的数据库管理工具)。2. 过程2.1 问题出现-- 通过SQL...
  • 为您提供Valentina Studio 数据库管理工具下载,Valentina Studio是一款可视化数据库管理工具,支持多种数据库,支持数据库的创建、管理、查询以及检索功能,用户可以使用架构编辑器、数据编辑器、SQL编辑器、查询...
  • 为您提供Valentina Studio 数据库管理工具下载,Valentina Studio是一款可视化数据库管理工具,支持多种数据库,支持数据库的创建、管理、查询以及检索功能,用户可以使用架构编辑器、数据编辑器、SQL编辑器、查询...
  • 今天给大家推荐一款好用的SQLite数据库管理工具sqlitestudio,比起其它SQLite管理工具,我喜欢用这个。很方便易用,不用安装的单个可执行文件,支持中文。 能完善的sqlite2和sqlite3工具,视图编码支持utf8。 支持...
  • 启动KingbaseES数据库查询分析器的方法有(ABC)A.通过开始菜单,选择KingbaseES安装程序组中的查询分析器启动B.通过JManager工具启动C.在命令行输入如下命令:"java-jarJSQL.jar"启动D.在控制管理器中点击启动...
  • asp在线数据库管理工具 sql、access在线数据库管理工具 您的电脑无须安装access查看器就能轻松在线管理数据库。 可对数据库进行追加、修改、删除等sql数据库操作,简单方便,数据实时操作。 由于微软默认提供的...
  • asp在线数据库管理工具 sql、access在线数据库管理工具 您的电脑无须安装access查看器就能轻松在线管理数据库。 可对数据库进行追加、修改、删除等sql数据库操作,简单方便,数据实时操作。 由于微软默认提供的...
  • 通用数据库管理工具

    2006-02-23 15:31:04
    1.本工具可以查询任何DB2数据库表,可动态、灵活显示字段项,同时可以导出表数据,也可以做部分表的数据维护(添加、修改、导入)2.本工具同时可以支持SYBASE、ORACEL、SQL SERVER等数据库。3.快捷键:F3-任意组合...
  • MySQL-Front 小巧实用的数据库管理工具,可以直接复制字段和表名。开发清闲很多。。
  • 为什么使用数据库? 持久化。内存中的变量当程序重启和电脑断电时丢失数据,而硬盘可以长...库(scheme)、表(table)、字段(field)、值(value)、主键(primary key)、外键(foreign key)。 常见数据库介绍 sqlit...
  • 当然了,功能目前只局限于执行sql上,以后会扩充到,更强大全面的数据库管理工具。 【乙】软件功能 『子』支持数据导出 语法格式: export c:\test.txt; select * from table 后面跟随的所有 sql语句都将生成...
  • ACCESS数据库管理工具1.0.0

    热门讨论 2006-03-16 00:00:00
    所以有空就写点小工具来练练手,写的小工具多了,就觉得单机板的小数据库程序有点麻烦,用VB自带的数据库工具不是很方便,创建和连接数据库都是很麻烦的,所以就想自己写一个小小的数据库管理工具来方便自己。...
  • PB数据库管理工具3.0

    热门讨论 2013-10-26 14:26:33
    《PBSQLServer Tools 3.0》,简洁实用的基础上,实现更加强大的功能,程序开发必备工具。 1、使用简单,功能强大,支持表名称快速查询。 2、支持表结构备注修改。 3、支持字段备注修改。 4、支持标准SQL语句动态...
  • 不管做什么项目,必须都得接触的东西就是时间...不过有一个最大的缺点就是查数据库不直观,也就是说我们用管理工具打开数据库的时候,看到的是一堆数字,维护数据不方便。为了解决这一缺陷,我找到一方法,先上代...
  • 新建连接: 连接名:任意 主机名:所连接数据库地址 端口:所连接端口 用户名及密码:对应数据库的用户名及密码 存储引擎及自增大小: 表的注释: 字段新增及注释: DDL:
  • 《PBSQLServer Tools 3.0》,简洁实用的基础上,实现更加强大的功能,程序开发必备工具。 1、使用简单,功能强大,支持表名称快速查询。 2、支持表结构备注修改。 3、支持字段备注修改。 4、支持标准SQL语句动态查询...
  • 目录SQLyog工具数据库的一些基本操作命令结构化查询语句数据值和列类型列类型数据字段属性数据表类型数据表的存储位置 : SQLyog工具    ...使用SQLyog管理工具自己完成以下操作 : ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,831
精华内容 732
关键字:

数据库字段管理工具