Maison  >  Article  >  développement back-end  >  Comment mapper le type « bit » de MySQL : booléen ou type personnalisé ?

Comment mapper le type « bit » de MySQL : booléen ou type personnalisé ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-17 11:07:02112parcourir

How to Map MySQL's 'bit' Type to Go: Bool or Custom Type?

Mappage du type « bit » de MySQL vers Go : comprendre la sélection du type Go

Dans MySQL, le type de données « bit » représente un seul bit valeur, souvent utilisée pour indiquer un état booléen. Lorsque vous utilisez Go avec MySQL via un ORM comme Beego, il est essentiel de choisir le type Go approprié pour mapper ce type de « bit ».

Considérations sur les types de données Java et Go

Comme mentionné, Java utilise un type « bit(1) » pour de tels scénarios. Cependant, dans Go, il n’existe pas de type « bit » natif. Par conséquent, nous devons déterminer quel type Go peut représenter de manière adéquate les valeurs « bits ».

Bool ou type personnalisé ?

Au départ, il peut sembler logique d'utiliser le Passez au type 'bool', correspondant à la nature booléenne de la donnée 'bit'. Cependant, l'utilisation de « bool » peut entraîner des erreurs de conversion lors de l'interaction avec la base de données.

Implémentation BitBool personnalisée

Pour résoudre ce problème, la bibliothèque Go « Sqlx » fournit un type 'BitBool' personnalisé spécialement conçu pour mapper les données 'bit' de MySQL. Ce type implémente les interfaces driver.Valuer et sql.Scanner, convertissant efficacement les valeurs booléennes vers et depuis les champs de bits 'bit(1)'.

Implémentation Beego ORM

Dans votre structure Beego ORM, vous pouvez maintenant utiliser le type 'BitBool' pour le champ 'Supprimé', comme indiqué ci-dessous :

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:"-"`
}

En utilisant le type 'BitBool' personnalisé, vous pouvez mapper efficacement les données 'bit(1)' au type Go 'BitBool' dans votre projet Beego sans avoir à modifier la base de données schéma.

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!

Déclaration:
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