feat(Go-Tool):创建ColorUtil:颜色输出工具、修改目录层级、添加数据库表字段处理工具(需要已连接数据库)

This commit is contained in:
huangzj
2020-04-27 16:33:17 +08:00
parent 9b0c055471
commit c71f2afe00
9 changed files with 152 additions and 10 deletions
+5 -5
View File
@@ -7,7 +7,7 @@
package main package main
import ( import (
"Go-Tool/util" "Go-Tool/util/reflectM"
"fmt" "fmt"
"reflect" "reflect"
) )
@@ -22,25 +22,25 @@ func testReflect() {
S: "1223", S: "1223",
T: make(map[string]string), T: make(map[string]string),
} }
structMap := util.GetStructFieldTypeMap(entity) structMap := reflectM.GetStructFieldTypeMap(entity)
fmt.Println("根据结构体获取Map结构") fmt.Println("根据结构体获取Map结构")
for key, val := range structMap { for key, val := range structMap {
fmt.Println(fmt.Sprintf("结构体属性,key: %v ,value: %v ", key, val)) fmt.Println(fmt.Sprintf("结构体属性,key: %v ,value: %v ", key, val))
} }
strMap := util.GetPtrFieldTypeMap(&entity) strMap := reflectM.GetPtrFieldTypeMap(&entity)
fmt.Println("根据结构体的指针对象获取Map结构") fmt.Println("根据结构体的指针对象获取Map结构")
for key, val := range strMap { for key, val := range strMap {
fmt.Println(fmt.Sprintf("结构体属性,key: %v ,value: %v ", key, val)) fmt.Println(fmt.Sprintf("结构体属性,key: %v ,value: %v ", key, val))
} }
ptrList := util.GetPtrTypeFieldNameList(reflect.TypeOf(&entity)) ptrList := reflectM.GetPtrTypeFieldNameList(reflect.TypeOf(&entity))
fmt.Println("根据结构体指针类型获取对应的属性名") fmt.Println("根据结构体指针类型获取对应的属性名")
for _, val := range ptrList { for _, val := range ptrList {
fmt.Println(fmt.Sprintf("字段名:%s ", val)) fmt.Println(fmt.Sprintf("字段名:%s ", val))
} }
structList := util.GetStructTypeFieldNameList(reflect.TypeOf(entity)) structList := reflectM.GetStructTypeFieldNameList(reflect.TypeOf(entity))
fmt.Println("根据结构体类型获取对应所有字段名称") fmt.Println("根据结构体类型获取对应所有字段名称")
for _, val := range structList { for _, val := range structList {
fmt.Println(fmt.Sprintf("字段名:%s ", val)) fmt.Println(fmt.Sprintf("字段名:%s ", val))
+3 -1
View File
@@ -6,4 +6,6 @@
# 更新日志 # 更新日志
2020/4/24 :创建FiledValueTool.go四个方法,分别处理【结构体对象】、【结构体指针对象】的字段名-字段值的map获取以及 【结构体类型】、【结构体指针类型】的字段名获取 2020/4/24 :创建FiledValueTool.go四个方法,分别处理【结构体对象】、【结构体指针对象】的字段名-字段值的map获取以及 【结构体类型】、【结构体指针类型】的字段名获取
2020/4/27 :创建FileUtil.go、FileReadTool.go、FileWriteTool.go文件,添加文件文件夹操作、读写文件操作方法 2020/4/27 :创建FileUtil.go、FileReadTool.go、FileWriteTool.go文件,添加文件文件夹操作、读写文件操作方法
2020/4/27 :创建ColorUtil:颜色输出工具、修改目录层级、添加数据库表字段处理工具(需要已连接数据库)
+44
View File
@@ -0,0 +1,44 @@
/*
* @Author : huangzj
* @Time : 2020/4/17 14:04
* @Description:控制台输出字体颜色工具,根据网上的内容修改,忘了对应的代码地址...
*/
package util
import "syscall"
var (
kernel32 *syscall.LazyDLL = syscall.NewLazyDLL(`kernel32.dll`)
proc *syscall.LazyProc = kernel32.NewProc(`SetConsoleTextAttribute`)
CloseHandle *syscall.LazyProc = kernel32.NewProc(`CloseHandle`)
// 给字体颜色对象赋值
FontColor Color = Color{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
)
type Color struct {
black int // 黑色
blue int // 蓝色
green int // 绿色
cyan int // 青色
Red int // 红色
purple int // 紫色
yellow int // 黄色
light_gray int // 淡灰色(系统默认值)
gray int // 灰色
light_blue int // 亮蓝色
light_green int // 亮绿色
light_cyan int // 亮青色
light_red int // 亮红色
light_purple int // 亮紫色
light_yellow int // 亮黄色
white int // 白色
}
// 输出有颜色的字体
func ColorPrint(s string, i int) {
handle, _, _ := proc.Call(uintptr(syscall.Stdout), uintptr(i))
print(s)
CloseHandle.Call(handle)
}
@@ -4,7 +4,7 @@
* @Description 文件读取工具 * @Description 文件读取工具
*/ */
package util package file
import ( import (
err2 "Go-Tool/err" err2 "Go-Tool/err"
+1 -1
View File
@@ -16,7 +16,7 @@
* *
*/ */
package util package file
import ( import (
err2 "Go-Tool/err" err2 "Go-Tool/err"
@@ -4,7 +4,7 @@
* @Description 文件写入工具 * @Description 文件写入工具
*/ */
package util package file
import ( import (
err2 "Go-Tool/err" err2 "Go-Tool/err"
@@ -4,7 +4,7 @@
* @Description * @Description
*/ */
package util package reflectM
import "reflect" import "reflect"
+56
View File
@@ -0,0 +1,56 @@
package tableField
import "database/sql"
type ColumnMessage struct {
Field string //字段名称
Type string //字段类型
Collation sql.NullString //编码信息
Null sql.NullString //是否允许为空
Key sql.NullString //是否是主键
Default sql.NullString //默认值
Extra sql.NullString //不懂
Privileges sql.NullString //执行权限
Comment sql.NullString //注释信息
}
/*
返回结果判断是不是主键
*/
func (c *ColumnMessage) IsKey() bool {
if c.Key.Valid && c.Key.String == "PRI" {
return true
}
return false
}
/*
返回结果是否为空信息
*/
func (c *ColumnMessage) CanNull() bool {
if c.Null.Valid && c.Null.String == "NO" {
return false
}
return true
}
/*
返回注释信息,没有注释信息返回空字符串
*/
func (c *ColumnMessage) GetComment() string {
if c.Comment.Valid {
return c.Comment.String
}
return ""
}
/*
返回默认值信息
*/
func (c *ColumnMessage) GetDefault() string {
if c.Default.Valid {
return c.Default.String
}
return ""
}
+40
View File
@@ -0,0 +1,40 @@
/*
* @Author : huangzj
* @Time : 2020/4/27 11:43
* @Description
*/
package tableField
import (
"database/sql"
"log"
"strings"
)
/*
* @param
* @return
* @description 在连接数据库的情况下进行数据库表的字段信息查询
* 这边的sql查询语句是:show full columns from [数据库名].[表名]
*/
func FindColumnMessage(dbName string, tableName string, db *sql.DB) ([]ColumnMessage, error) {
var cms []ColumnMessage
row, err := db.Query(strings.Join([]string{"show full columns from ", dbName, ".", tableName}, ""))
if err != nil {
log.Printf("数据库查询出错:" + err.Error())
return nil, err
}
for row.Next() {
var cm ColumnMessage
err := row.Scan(&cm.Field, &cm.Type, &cm.Collation, &cm.Null, &cm.Key, &cm.Default, &cm.Extra, &cm.Privileges, &cm.Comment)
if err != nil {
log.Printf("字段赋值错误了" + err.Error())
return nil, err
}
cms = append(cms, cm)
}
return cms, nil
}