Я не уверен, что / if xorm
может с этим поделать, но вы можете просто создать тип и реализовать для него интерфейсы Valuer
и Scanner
.Вот пример, который я сделал по запросу для использования bit(1)
для bool
.
https://github.com/jmoiron/sqlx/blob/master/types/types.go#L152
Для целого числа, вы бы просто вернули int
вместо[]byte
, содержащий int
.Например:
type IntBool bool
// Value implements the driver.Valuer interface,
// and turns the IntBool into an integer for MySQL storage.
func (i IntBool) Value() (driver.Value, error) {
if i {
return 1, nil
}
return 0, nil
}
// Scan implements the sql.Scanner interface,
// and turns the int incoming from MySQL into an IntBool
func (i *IntBool) Scan(src interface{}) error {
v, ok := src.(int)
if !ok {
return errors.New("bad int type assertion")
}
*i = v == 1
return nil
}
Тогда ваша структура будет просто использовать новый тип
type myStruct struct {
isDeleted IntBool `xorm:"'isDeleted' tinyint(3)"`
}
Но, опять же, есть ли какая-то особая причина, по которой вы объявили это логическое значение как tinyint
?MySQL имеет логический тип, и все будет просто работать.