java2sql 是一款基于java代码开发的数据库命令行构建工具。通过简单的命令生成和迁移填充数据库数据。
受 Laravel Artisan Migrate/Seeder 功能启发开发而成。
github开源地址:https://github.com/godcheese/java2sql
优点:
- 利用 java 代码书写,java开发者的自然优越感
- 用命令行操作,使用更加简单
- 代码复用率更高
基础组件有Migrate、Seeder等
安装:
使用
java -jar java2sql migration:UsersMigration java2sql migration:UsersMigration // 这句必需在系统设置环境变量后才能正常运行
在 migrations 生成如下 *.java 文件,每个文件代表一个数据表迁移,每个文件都有一个public static void main(String[] args) 方法。
Template migration class java 代码实例:
package com.gioov.java2sql; import com.gioov.java2sql.adapter.DatabaseAdapter; import com.gioov.java2sql.adapter.FieldAdapter; import com.gioov.java2sql.adapter.mysql.MySqlAdapter; import com.gioov.java2sql.adapter.mysql.MysqlFieldAdapter; import com.gioov.java2sql.adapter.mysql.MysqlTableAdapter; /** * Created by godcheese on 2017/7/16. */ public class TemplateMigration { public static void main(String[] arg){ /** * * Init database adapter * Init table adapter * Init migration * */ DatabaseAdapter database=new MySqlAdapter(); database.setName("test").setCharacterSet("utf8mb4").setCollate("utf8mb4"); MysqlTableAdapter table =new MysqlTableAdapter(); table.setName("NewTable"); Migration migration =new Migration(database,table); /** * Init field adapter and set properties * Field Name:id * Field Type:bigint * Field Length:20 * Filed Primary Key:true * Filed Auto Increment:true * Field Null:false * Field Unsigned:false * */ FieldAdapter idField=new MysqlFieldAdapter().setName("id").setType("bigint").setLength(20).setPrimaryKey(true).setAutoIncrement(true).setIsNull(false).setIsUnsigned(false); /** * Init field adapter and set properties * Field Name:name * Field Type:varchar * Field Length:50 * Filed Null:false * */ FieldAdapter nameField=new MysqlFieldAdapter().setName("name").setType("varchar").setLength(50).setIsNull(false); // Add database table fields String sql= migration.addField(idField).addField(nameField).execute(); System.out.println(sql); /** * * * Result Sql: DROP TABLE IF EXISTS `NewTable`; * CREATE TABLE `NewTable` ( `id` bigint(20) NOT NULL , * `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4 NOT NULL , * PRIMARY KEY (`id`) ) * ENGINE= InnoDB; * */ } }