Heim >Backend-Entwicklung >Golang >Wie kann ich den bit(1)-Typ von MySQL mithilfe des ORM von Beego einem Go-Typ zuordnen?

Wie kann ich den bit(1)-Typ von MySQL mithilfe des ORM von Beego einem Go-Typ zuordnen?

DDD
DDDOriginal
2024-11-17 04:14:03469Durchsuche

How can I map MySQL's bit(1) type to a Go type using Beego's ORM?

MySQLs Bittyp: Eine perfekte Übereinstimmung mit Go's Custom Bool

Frage:
In einer Datenbanktabelle Wie kann ich eine Spalte vom Typ bit(1) mithilfe von Beego einem Go-Typ zuordnen? ORM?

Antwort:

Da Go keinen integrierten Typ für Bit(1) hat, besteht der empfohlene Ansatz darin, einen benutzerdefinierten Bool-Typ zu erstellen.

Benutzerdefinierter Bool-Typ für MySQL's Bit(1)
Um dieses Problem zu lösen, kann ein benutzerdefinierter Bool-Typ verwendet werden erstellt, um die Spalte bit(1) zu verarbeiten.

type BitBool bool

// Value converts BitBool to a bitfield (BIT(1)) for MySQL storage.
func (b BitBool) Value() (driver.Value, error) {
    if b {
        return []byte{1}, nil
    } else {
        return []byte{0}, nil
    }
}

// Scan converts the incoming bitfield from MySQL into a BitBool.
func (b *BitBool) Scan(src interface{}) error {
    v, ok := src.([]byte)
    if !ok {
        return errors.New("bad []byte type assertion")
    }
    *b = v[0] == 1
    return nil
}

Verwendung in Go-Struktur
Um den benutzerdefinierten BitBool-Typ in einer Go-Struktur zu verwenden, deklarieren Sie ihn einfach als Typ für das entsprechende Feld:

type BaseModel struct {
    Id          string           `orm:"pk";form:"id"`
    CreatedTime time.Time        `orm:"auto_now_add;type(datetime)";form:"-"`
    UpdatedTime time.Time        `orm:"auto_now;type(datetime)";form:"-"`
    Deleted     BitBool  `form:"-"`
}

Durch die Verwendung eines benutzerdefinierten BitBool-Typs können Sie den bit(1)-Typ von MySQL einem Go-Typ zuordnen, der das verarbeitet Bit-Manipulation entsprechend durchführen und so die Fehler vermeiden, die durch die Verwendung des Standard-Bool-Typs entstehen.

Das obige ist der detaillierte Inhalt vonWie kann ich den bit(1)-Typ von MySQL mithilfe des ORM von Beego einem Go-Typ zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn