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

DDD
Lepaskan: 2024-11-17 04:14:03
asal
406 orang telah melayarinya

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
}
Salin selepas log masuk

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:"-"`
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan