记录版本
安装
go get -u github.com/go-spring/spring-core@v1.1.0-rc2
go get -u github.com/go-spring/starter-gin@v1.1.0-rc2
go get -u github.com/go-spring/starter-echo@v1.1.0-rc2
go get -u github.com/go-spring/starter-gorm@v1.1.0-rc2
go get -u github.com/jinzhu/gorm
go get -u github.com/go-spring/starter-go-redis@v1.1.0-rc2
go get -u github.com/go-spring-starter-redigo@v1.1.0-rc2
Web 应用集成starter-gorm
1.配置文件config/application.yml
db :
url : root: password@tcp(host: 3306)/db_name? charset=utf8mb4&parseTime=True&loc=Local
2.main.go
package main
import (
"github.com/go-spring/spring-core/gs"
"github.com/go-spring/spring-core/web"
_ "github.com/go-spring/starter-gin"
_ "github.com/go-spring/starter-gorm/mysql"
"github.com/jinzhu/gorm"
"log"
)
type user struct {
Id int64 `json:"id" gorm:"primary_key"`
Username string `json:"username"`
Age int `json:"age"`
Email string `json:"email"`
}
func ( u * user) TableName ( ) string {
return "user"
}
type gormController struct {
db * gorm. DB `autowire:"?"`
}
func ( c * gormController) selectUsers ( ctx web. Context) {
var users [ ] user
c. db. Model ( & user{ } ) . Find ( & users)
ctx. JSON ( & users)
}
func init ( ) {
gs. Object ( new ( gormController) ) . Init ( func ( c * gormController) {
gs. GetMapping ( "/users" , c. selectUsers)
} )
}
func main ( ) {
log. Fatal ( gs. Run ( ) )
}
Web 应用集成gorm多数据源
1.config/application.yml
dbs :
- name : gorm- db1
url : root: password@tcp(host: 3306)/db_name? charset=utf8mb4&parseTime=True&loc=Local
type : mysql
- name : gorm- db2
url : root: password@tcp(host: 3306)/db_name? charset=utf8mb4&parseTime=True&loc=Local
type : mysql
2.创建一个dbs.go文件用来单独注入*gorm.DB实例
package main
import (
"github.com/go-spring/spring-core/gs"
"github.com/jinzhu/gorm"
"github.com/labstack/gommon/log"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type DBConfig struct {
Name string `value:"${name}"`
Url string `value:"${url}"`
Type string `value:"${type}"`
}
func init ( ) {
gs. OnProperty ( "dbs" , func ( config [ ] DBConfig) {
for _ , dbConfig := range config {
db, err := CreateDB ( dbConfig)
if err != nil {
log. Fatal ( err)
}
gs. Object ( db) . Destroy ( CloseDB) . Name ( dbConfig. Name)
}
} )
}
func CreateDB ( config DBConfig) ( * gorm. DB, error ) {
return gorm. Open ( config. Type, config. Url)
}
func CloseDB ( db * gorm. DB) {
log. Info ( "close gorm mysql" )
if err := db. Close ( ) ; err != nil {
log. Error ( err)
}
}
3.main.go
package main
import (
"github.com/go-spring/spring-core/gs"
"github.com/go-spring/spring-core/web"
_ "github.com/go-spring/starter-gin"
"github.com/jinzhu/gorm"
"log"
)
type user struct {
Id int64 `json:"id" gorm:"primary_key"`
Username string `json:"username"`
Age int `json:"age"`
Email string `json:"email"`
}
func ( u * user) TableName ( ) string {
return "user"
}
type gormController struct {
db * gorm. DB `autowire:"gorm-db1"`
}
func ( c * gormController) selectUsers ( ctx web. Context) {
var users [ ] user
c. db. Model ( & user{ } ) . Find ( & users)
ctx. JSON ( & users)
}
func init ( ) {
gs. Object ( new ( gormController) ) . Init ( func ( c * gormController) {
gs. GetMapping ( "/users" , c. selectUsers)
} )
}
func main ( ) {
log. Fatal ( gs. Run ( ) )
}
Web 应用集成starter-go-redis/starter-redigo
1.config/application.yml
redis :
host : host
port : 6379
password : password
database : 0
2.main.go
package main
import (
"github.com/go-spring/spring-core/gs"
"github.com/go-spring/spring-core/redis"
"github.com/go-spring/spring-core/web"
_ "github.com/go-spring/starter-gin"
"log"
_ "github.com/go-spring/starter-go-redis"
)
type redisController struct {
redisClient redis. Client `autowire:"?"`
}
func ( c * redisController) get ( ctx web. Context) {
key := ctx. QueryParam ( "key" )
value, err := c. redisClient. Get ( ctx. Context ( ) , key)
if err != nil {
ctx. JSON ( web. ERROR. Error ( err) )
} else {
ctx. JSON ( web. SUCCESS. Data ( value) )
}
}
func init ( ) {
gs. Object ( new ( redisController) ) . Init ( func ( c * redisController) {
gs. GetMapping ( "/redis/get" , c. get)
} )
}
func main ( ) {
log. Fatal ( gs. Run ( ) )
}