用Go创造的命令行工具:让开发人员早点下班!
2023-11-26 18:25:16
开发者早点下班神器:提高效率,早享自由
作为一名软件工程师,你是否因加班苦恼不已,渴望有更多的时间陪伴家人和朋友?那么,这款用 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. 该工具是否免费?
答:是的,该工具是免费开源的。