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

DDD
Freigeben: 2024-11-17 04:14:03
Original
409 Leute haben es durchsucht

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
}
Nach dem Login kopieren

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:"-"`
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage