小编len*_*ard的帖子

使用GORM选择相关字段

我是来自python背景的Golang的新手,因此尝试了解新的和不同的概念。我正在尝试创建相关字段,然后从数据库中选择它们。

楷模:

type Company struct {
    gorm.Model
    Name string
}

type CreditCard struct {
    gorm.Model
    Number    int
    Company   Company
    CompanyId uint
}

type User struct {
    gorm.Model
    Name         string
    CreditCard   CreditCard
    CreditCardID uint
}
Run Code Online (Sandbox Code Playgroud)

创建表和行并从数据库中选择

common.DB.AutoMigrate(
    &Company{},
    &CreditCard{},
    &User{},
)

user := User{
    Name:       "Alice",
    CreditCard: CreditCard{Number: 123456, Company: Company{Name: "Bank A"}},
}

common.DB.Create(&user)

var retrivedUser User
var creditCard CreditCard
var company Company
common.DB.First(&retrivedUser, 1).Related(&creditCard).Related(&company)

fmt.Println("user name", retrivedUser.Name)
fmt.Println("creditcard number", retrivedUser.CreditCard.Number)
fmt.Println("creditcard number related", creditCard.Number)
fmt.Println("company name", retrivedUser.CreditCard.Company.Name)
fmt.Println("company name …
Run Code Online (Sandbox Code Playgroud)

go go-gorm

5
推荐指数
1
解决办法
316
查看次数

定期运行多个方法

我是新手,尝试让两种方法在应用程序运行时定期同时运行。我已经设法想出以下内容,但该for true部分感觉不正确,因为这是阻塞的。

渠道是实现这一目标的更好方法吗?任何指向正确方向的指针都会有所帮助。

func main() {
    t1 := schedule(ping, time.Second)
    t2 := schedule(ping, 2*time.Second)
    for true {
        time.Sleep(1 * time.Second)
    }
    t1.Stop()
    t2.Stop()
}

func schedule(f func(interval time.Duration), interval time.Duration) *time.Ticker {
    ticker := time.NewTicker(interval)
    go func() {
        for range ticker.C {
            f(interval)
        }
    }()
    return ticker
}

func ping(interval time.Duration) {
    log.Println("ping ", interval)
}
Run Code Online (Sandbox Code Playgroud)

go goroutine

3
推荐指数
1
解决办法
221
查看次数

使用 OneToMany 连接维护订单

我正在使用 spring boot 并希望将产品列表作为外键添加到页面中,但是当我从数据库中检索时如何维护 ArrayList 顺序?我应该有一个中间表,例如PageProductOrder维护产品主键和订单列吗?

@Entity
public class Page {
    @OneToMany
    @JoinColumn(name = "product_id")
    private List<Product> products;
Run Code Online (Sandbox Code Playgroud)

java jpa spring-data-jpa spring-boot

3
推荐指数
1
解决办法
1481
查看次数

在 Web 应用程序中运行计划任务

我想每 5 分钟运行一次任务来更新我网站上的统计信息,而不会阻止 HTTP 服务器。

我刚刚添加了基本的 HTTP 服务器逻辑和一个工作程序示例。如果我添加了多个这样的任务,这被认为是不好的做法还是有更好的方法?

package main

import (
    "fmt"
    "net/http"
    "time"
)

func Home(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Home page")
}

func schedule(f func(), interval time.Duration) *time.Ticker {
    ticker := time.NewTicker(interval)
    go func() {
        for range ticker.C {
            f()
        }
    }()
    return ticker
}

func longRunningTask() {
    fmt.Println("Long running task")
}

func main() {
    schedule(longRunningTask, time.Second*5)

    http.HandleFunc("/", Home)
    http.ListenAndServe("127.0.0.1:8080", nil)
}
Run Code Online (Sandbox Code Playgroud)

go goroutine

0
推荐指数
1
解决办法
778
查看次数

标签 统计

go ×3

goroutine ×2

go-gorm ×1

java ×1

jpa ×1

spring-boot ×1

spring-data-jpa ×1