表字段 bit(1)

package basemodel

import (
    "database/sql/driver"
    "fmt"
    "strconv"
)

type BitField bool

func (t *BitField) MarshalJSON() ([]byte, error) {

    var value bool
    if *t {
       value = true
    } else {
       value = false
    }
    return []byte(strconv.FormatBool(value)), nil
}

func (t *BitField) UnmarshalJSON(data []byte) error {
    if string(data) == "null" {
       return nil
    }
    b, _ := strconv.ParseBool(string(data))

    if b {
       *t = true
    } else {
       *t = false
    }

    return nil
}

func (t *BitField) Value() (driver.Value, error) {
    if *t {
       return true, nil
    }
    return false, nil
}

func (t *BitField) Scan(v interface{}) error {
    value, ok := v.([]byte)
    if ok {
       if value[0] == 0x01 {
          *t = true
       } else {
          *t = false
       }
       return nil
    }
    return fmt.Errorf("can not convert %v to timestamp", v)
}
使用
type DepartmentParams struct {

    /*    */
    Id *int32 `gorm:"column:id;type:int(11);PRIMARY_KEY;comment:''" json:"id"`
    /*  编码  */
    Code *string `gorm:"column:code;type:varchar(32);comment:'编码';default:\'none\'" json:"code"`
    /*  部门名称  */
    Name *string `gorm:"column:name;type:varchar(32);comment:'部门名称'" json:"name"`
    /*    */
    ParentId *int32 `gorm:"column:parent_id;type:int(11);comment:''" json:"parent_id"`
    /*    */
    DepPath *string `gorm:"column:dep_path;type:varchar(255);comment:''" json:"dep_path"`
    /*    */
    Enabled *basemodel.BitField `gorm:"column:enabled;type:bit(1);comment:''" json:"enabled"`
    /*    */
    IsParent *int8 `gorm:"column:is_parent;type:tinyint(1);comment:'';default:0" json:"is_parent"`
    /*  负责人  */
    MngrId *int32 `gorm:"column:mngr_id;type:int(11);comment:'负责人';default:0" json:"mngr_id"`
    /*  0-部门 1-班组  */
    Type *int32 `gorm:"column:type;type:int(11);comment:'0-部门 1-班组';default:0" json:"type"`
}
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐