Maison > développement back-end > Golang > le corps du texte

Comment puis-je mapper le type bit(1) de MySQL à un type Go à l'aide de l'ORM de Beego ?

DDD
Libérer: 2024-11-17 04:14:03
original
406 Les gens l'ont consulté

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

Type de bits de MySQL : une correspondance parfaite avec le bool personnalisé de Go

Question :
Dans une table de base de données avec une colonne de type bit(1), comment puis-je la mapper à un type Go à l'aide de l'ORM de Beego ?

Réponse :

Puisque Go n'a pas de colonne de type build -dans le type pour bit(1), l'approche recommandée consiste à créer un type bool personnalisé.

Bool personnalisé pour Bit(1) de MySQL
Pour résoudre ce problème, un type personnalisé Un type booléen peut être créé pour gérer la colonne bit(1).

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
}
Copier après la connexion

Utilisation dans Go Struct
Pour utiliser le type BitBool personnalisé dans une structure Go, déclarez-le simplement comme type pour le champ correspondant :

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:"-"`
}
Copier après la connexion

En utilisant un type BitBool personnalisé, vous pouvez mapper le type bit(1) de MySQL à un type Go qui gère la manipulation des bits de manière appropriée, en évitant les erreurs qui surviennent en utilisant le type booléen par défaut.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal