返回

用Go创造的命令行工具:让开发人员早点下班!

开发工具

开发者早点下班神器:提高效率,早享自由

作为一名软件工程师,你是否因加班苦恼不已,渴望有更多的时间陪伴家人和朋友?那么,这款用 Go 语言开发的命令行工具就是你的福音,它将帮助你提高工作效率,早早下班!

工具概览

"开发者早点下班神器" 集成了多项功能,包括:

  • 从建表 SQL 生成 Java Bean 和 Go 结构体
  • 将 SQL 语句转换为 ElasticSearch 查询的 DSL 语言
  • 增强 Git 功能:glog、gl、gcl、gst
  • 反解 Navicat 数据库连接密码

使用方法

使用该工具非常简单,只需在命令行中输入以下命令:

go run main.go [命令] [选项]

其中,[命令] 表示你要执行的命令,[选项] 表示要传递给命令的参数。

例如,要从建表 SQL 生成 Java Bean,请输入:

go run main.go sql2java -sql=schema.sql -output=bean.java

其中,-sql 表示建表 SQL 文件,-output 表示要生成的 Java Bean 文件。

适用场景

该工具可在多种场景中发挥作用:

  • 开发 Java 项目时,可生成 Java Bean,节省编写时间。
  • 开发 ElasticSearch 项目时,可将 SQL 语句转换成 ElasticSearch 查询 DSL,快速构建查询。
  • 使用 Git 管理代码时,可增强功能,例如快速查看日志(glog)或提交代码(gl)。
  • 忘记 Navicat 数据库连接密码时,可反解密码,找回丢失信息。

优势

  • 功能强大: 集成多种功能,满足开发者需求。
  • 使用简单: 操作方便,上手容易。
  • 免费开源: 可自由使用和修改。

代码示例

以下是生成 Java Bean 的代码示例:

package main

import (
	"database/sql"
	"fmt"
	"log"
	"os"
	"strings"
	"text/template"

	_ "github.com/go-sql-driver/mysql"
)

const (
	sqlTemplate = `type {{.StructName}} struct {
		{{range .Fields}}{{.Name}} {{.Type}}
		{{end}}
	}`
)

type Field struct {
	Name  string
	Type  string
	IsPK  bool
	IsFK  bool
	FKRef string
}

type Table struct {
	Name   string
	Fields []Field
}

func main() {
	db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/database_name")
	if err != nil {
		log.Fatal(err)
	}

	tables, err := getTables(db)
	if err != nil {
		log.Fatal(err)
	}

	for _, table := range tables {
		if err := generateBean(table); err != nil {
			log.Fatal(err)
		}
	}
}

func getTables(db *sql.DB) ([]Table, error) {
	rows, err := db.Query(`
		SELECT
			table_name,
			column_name,
			data_type,
			is_nullable,
			column_key,
			referenced_table_name,
			referenced_column_name
		FROM
			information_schema.columns
		WHERE
			table_schema = database()
		ORDER BY
			table_name,
			ordinal_position;
	`)
	if err != nil {
		return nil, err
	}

	tables := map[string]Table{}
	for rows.Next() {
		var tableName, columnName, dataType, isNullable, columnKey, referencedTableName, referencedColumnName string
		if err := rows.Scan(&tableName, &columnName, &dataType, &isNullable, &columnKey, &referencedTableName, &referencedColumnName); err != nil {
			return nil, err
		}

		isPK := strings.EqualFold(columnKey, "PRI")
		isFK := referencedTableName != ""

		table, ok := tables[tableName]
		if !ok {
			table = Table{Name: tableName}
			tables[tableName] = table
		}

		table.Fields = append(table.Fields, Field{
			Name:  columnName,
			Type:  dataType,
			IsPK:  isPK,
			IsFK:  isFK,
			FKRef: fmt.Sprintf("%s.%s", referencedTableName, referencedColumnName),
		})
	}

	return []Table(values(tables)), nil
}

func generateBean(table Table) error {
	t := template.Must(template.New("bean").Parse(sqlTemplate))
	file, err := os.Create(fmt.Sprintf("%s.java", table.Name))
	if err != nil {
		return err
	}

	return t.Execute(file, table)
}

func values[T any](m map[string]T) []T {
	values := make([]T, len(m))
	i := 0
	for _, v := range m {
		values[i] = v
		i++
	}

	return values
}

结论

"开发者早点下班神器" 是一款实用的工具,可提高开发人员的工作效率,减少加班时间。它的多项功能覆盖了从 SQL 生成到 Git 增强等各种需求,使用简单,免费开源。如果你想提高工作效率,早点享受生活,一定要试试这款神器!

常见问题解答

1. 如何安装该工具?
答:在命令行中运行 "go install github.com/lxn3032/go-developer-helper"。

2. 如何检查我是否成功安装了该工具?
答:运行 "go run github.com/lxn3032/go-developer-helper -version",如果显示版本号,则表示安装成功。

3. 如何使用该工具生成 Java Bean?
答:运行 "go run github.com/lxn3032/go-developer-helper sql2java -sql=schema.sql -output=bean.java"。

4. 该工具是否可以在 Windows 上使用?
答:是的,只要安装了 Go,该工具就可以在 Windows、Mac 和 Linux 系统上使用。

5. 该工具是否免费?
答:是的,该工具是免费开源的。