diff --git a/.gitignore b/.gitignore index ecd1c9c..9017b54 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ *.exe -.idea/ \ No newline at end of file +.idea/ + +conf.json \ No newline at end of file diff --git a/SqlxDemo/sqlx_example.go b/SqlxDemo/sqlx_example.go new file mode 100644 index 0000000..4c10702 --- /dev/null +++ b/SqlxDemo/sqlx_example.go @@ -0,0 +1,80 @@ +package SqlxDemo + +import ( + "fmt" + "os" + + _ "github.com/go-sql-driver/mysql" + "github.com/jinzhu/configor" + "github.com/jmoiron/sqlx" +) + +var db *sqlx.DB + +type Config struct { + Mysql DBConfig `json:"mysql"` +} + +type DBConfig struct { + Username string `json:"username"` + Password string `json:"password"` + Host string `json:"host"` + Prefix string `json:"prefix"` +} + +type Music struct { + ID int `db:"id"` + Author string `db:"music_author"` + Name string `db:"music_name"` + Album string `db:"music_album"` + Time string `db:"music_time"` + MusicType string `db:"music_type"` + Lyrics string `db:"music_lyrics"` + Arranger string `db:"music_arranger"` +} + +// InitDB 初始化DB连接 +func InitDB() error { + // 读取conf.json配置文件 + confDir := "conf.json" + _, err := os.Stat(confDir) + if err != nil { + return err + } + + // 解析conf.json配置文件 + var conf Config + err = configor.Load(&conf, confDir) + if err != nil { + return err + } + + // 新建DB连接 + dataSourceName := fmt.Sprintf("%s:%s@tcp(%s)/%s", conf.Mysql.Username, conf.Mysql.Password, conf.Mysql.Host, + conf.Mysql.Prefix) + db, err = sqlx.Connect("mysql", dataSourceName) + if err != nil { + return err + } + return nil +} + +// SimpleQueryRow 数据库操作 +func SimpleQueryRow() { + err := InitDB() + if err != nil { + fmt.Printf("Connect to Database failed: %v \n", err) + return + } + + sqlStr := "select * from music_music" + var music []Music + err = db.Select(&music, sqlStr) + if err != nil { + fmt.Printf("query failed, err: %v \n", err) + return + } + for _, v := range music { + fmt.Println(v) + } +} diff --git a/go.mod b/go.mod index 82d99c7..5031d75 100644 --- a/go.mod +++ b/go.mod @@ -5,11 +5,15 @@ go 1.19 require github.com/gin-gonic/gin v1.8.1 require ( + github.com/BurntSushi/toml v0.3.1 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect github.com/go-playground/validator/v10 v10.11.1 // indirect + github.com/go-sql-driver/mysql v1.6.0 // indirect github.com/goccy/go-json v0.9.11 // indirect + github.com/jinzhu/configor v1.2.1 // indirect + github.com/jmoiron/sqlx v1.3.5 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/mattn/go-isatty v0.0.16 // indirect diff --git a/go.sum b/go.sum index 893f7de..449dccb 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -14,12 +16,18 @@ github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/j github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/jinzhu/configor v1.2.1 h1:OKk9dsR8i6HPOCZR8BcMtcEImAFjIhbJFZNyn5GCZko= +github.com/jinzhu/configor v1.2.1/go.mod h1:nX89/MOmDba7ZX7GCyU/VIaQ2Ar2aizBl2d3JLF/rDc= +github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= +github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -32,8 +40,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -89,6 +99,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main/main.go b/main/main.go index 2b00715..14c8dcc 100644 --- a/main/main.go +++ b/main/main.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/oleiade/reflections" "strings" + "sunrun/SqlxDemo" "sunrun/public" ) @@ -75,10 +76,12 @@ func withResolveSelectFields(i interface{}, s ...string) []string { } func main() { - a := VirtualServer{} - fmt.Println(a) + //a := VirtualServer{} + //fmt.Println(a) + // + //t := withResolveSelectFields(a, "ID", "Name", "ProviderName", "DeviceGroupName", "DestAddress", "Port", + // "Protocol", "Type", "ProjectID", "DeviceGroupID", "Availability", "State", "FullPath", "Remark") + //fmt.Println(t) - t := withResolveSelectFields(a, "ID", "Name", "ProviderName", "DeviceGroupName", "DestAddress", "Port", - "Protocol", "Type", "ProjectID", "DeviceGroupID", "Availability", "State", "FullPath", "Remark") - fmt.Println(t) + SqlxDemo.SimpleQueryRow() }