gormt icon indicating copy to clipboard operation
gormt copied to clipboard

能支持 sql.NullString ,sql.NullInt64 等Null 系列吗

Open lq277012525 opened this issue 4 years ago • 15 comments

rt

lq277012525 avatar Apr 06 '21 19:04 lq277012525

有例子吗?

xxjwxc avatar Apr 07 '21 01:04 xxjwxc

在生成 Struct 的时候 如果该字段可能为null ,现在是可选生成 指针。但是我在使用过程中。指针需要判断是否为空,会增加很多判断代码,如果替换成标准库的 sql.NullInt64 等,大部分时候,使用会比较方便。 type Test struct { ID int gorm:"primaryKey;column:ID;type:int(11);not null"
NAME string gorm:"unique;column:NAME;type:varchar(128);not null"
LOGINTIMES sql.NullInt32 gorm:"column:LOGIN_TIMES;type:int(11);default:0"
CNATONID sql.NullString gorm:"column:CNATON_ID;type:varchar(255)"
TYPE sql.NullInt32 gorm:"column:TYPE;type:int(11);default:0"
PHONENUMBER sql.NullString gorm:"column:PHONE_NUMBER;type:varchar(64)" ADDRESS sql.NullString gorm:"column:ADDRESS;type:varchar(255)" }

lq277012525 avatar Apr 07 '21 09:04 lq277012525

好的,这个可以通过注解来做 我提上日程

xxjwxc avatar Apr 07 '21 14:04 xxjwxc

急急急,也遇到了这个问题

studyzhanglei avatar Aug 16 '21 08:08 studyzhanglei

image

config.yam 中可以自定义映射,目前可以支持哈!

xxjwxc avatar Aug 16 '21 08:08 xxjwxc

image

config.yam 中可以自定义映射,目前可以支持哈!

这样还是挺麻烦,我这边db之前设计的不规范,很多字段都有null,能选择设置所有的字段都带上sql.Nul**的形式吗

studyzhanglei avatar Aug 16 '21 10:08 studyzhanglei

不麻烦吧,你数据库类型应该不多!这是类型映射

xxjwxc avatar Aug 16 '21 12:08 xxjwxc

还有一种方法: https://github.com/xxjwxc/gormt/blob/master/data/view/cnf/def.go

修改这里面的kv信息,然后重新编译一下: make windows or make linux or make mac

xxjwxc avatar Aug 16 '21 13:08 xxjwxc

还有一种方法: https://github.com/xxjwxc/gormt/blob/master/data/view/cnf/def.go

修改这里面的kv信息,然后重新编译一下: make windows or make linux or make mac

哥哥 我试的好像不行

self_type_define: # Custom data type mapping
    datetime: time.Time
    date: time.Time
    int: sql.NullInt32
    varchar: sql.NullString
    string: sql.NullString
    bool: uint8

还有一个问题啊 int(1) 会生成bool类型的值 然后解析就报错了 sql/driver: couldn't convert -1 into type bool

studyzhanglei avatar Sep 08 '21 11:09 studyzhanglei

把int(1)也映射成你自己要定义的类型

xxjwxc avatar Sep 08 '21 11:09 xxjwxc

把int(1)也映射成你自己要定义的类型

可以了~ int(1),int(4), int(10)都需要挨个设置一下吗? 这个还好,毕竟有限, varchar这个有点难弄呀, varchar(1) varchar(2) varchar(999)... 我之前的表很乱,我现在想把varchar字段都设置为sql.NullString可以吗?

studyzhanglei avatar Sep 08 '21 11:09 studyzhanglei

把int(1)也映射成你自己要定义的类型

int(1) 可以 tinyint(1) 好像不行

studyzhanglei avatar Sep 08 '21 11:09 studyzhanglei

同理

xxjwxc avatar Sep 08 '21 12:09 xxjwxc

@studyzhanglei 如果有需要,请联系我微信,我帮你看下

xxjwxc avatar Sep 09 '21 01:09 xxjwxc

@studyzhanglei 如果有需要,请联系我微信,我帮你看下

微信号 zhanglstudy

studyzhanglei avatar Sep 09 '21 02:09 studyzhanglei