Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh memetakan jenis bit(1) MySQL kepada jenis Go menggunakan ORM Beego?

Bagaimanakah saya boleh memetakan jenis bit(1) MySQL kepada jenis Go menggunakan ORM Beego?

DDD
DDDasal
2024-11-17 04:14:03399semak imbas

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

Jenis Bit MySQL: Padanan Sempurna dengan Bool Tersuai Go

Soalan:
Dalam jadual pangkalan data dengan lajur jenis bit(1), bagaimana saya boleh memetakannya kepada jenis Go menggunakan Beego ORM?

Jawapan:

Memandangkan Go tidak mempunyai jenis terbina dalam untuk bit(1), pendekatan yang disyorkan ialah mencipta jenis bool tersuai.

Bool Tersuai untuk Bit MySQL(1)
Untuk menyelesaikan isu ini, jenis bool tersuai boleh dibuat untuk mengendalikan lajur 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
}

Penggunaan dalam Go Struct
Untuk menggunakan jenis BitBool tersuai dalam struct Go, hanya isytiharkannya sebagai taip untuk medan yang sepadan:

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

Dengan menggunakan jenis BitBool tersuai, anda boleh memetakan jenis bit(1) MySQL kepada Go jenis yang mengendalikan manipulasi bit dengan sewajarnya, mengelakkan ralat yang timbul daripada menggunakan jenis bool lalai.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memetakan jenis bit(1) MySQL kepada jenis Go menggunakan ORM Beego?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn