go xorm存庫處理null值問題
go xorm存庫處理null值
go 的結構有默認值, 這樣從數據庫獲取的時候, null 值會被解析成 0 , 而0 在系統(tǒng)是一個有效值。
Go 的結構體不直接支持整數類型的 NULL 值。
Go 是一種靜態(tài)類型語言,結構體的字段類型在編譯時必須確定。
整數類型(如 int、int64 等)是非指針類型,不能直接存儲 NULL 值。
然而,你可以使用指針類型來模擬整數類型的 NULL 值。
通過將整數字段定義為指針類型,可以將其設置為指向整數值或者為 nil(NULL)。
示例
func main() {
db, err := NewDBCnn()
if err != nil {
fmt.Println(err.Error())
return
}
var a int = 13
b1 := &ModelUser{
Id: 431,
Name: "測試新增2",
Age: &a,
Passwd: nil,
Created: "",
Updated: "",
}
db.Insert(b1)
bean := new(ModelUser)
rows, err := db.Rows(bean)
if err != nil {
fmt.Println(err.Error())
}
defer rows.Close()
var ret = make(map[int64]ModelUser)
for rows.Next() {
bean = new(ModelUser)
rows.Scan(bean)
ret[bean.Id] = *bean
}
for _, v := range ret {
fmt.Println(fmt.Sprintf("%v", v))
}
test, _ := json.Marshal(ret)
fmt.Println(string(test))
}
// NewDBCnn 新建數據庫連接
func NewDBCnn() (*xorm.Engine, error) {
engine, err := xorm.NewEngine("mysql", "root:localsense@tcp(127.0.0.1:3306)/test?charset=utf8")
if err != nil {
// 處理連接錯誤
}
return engine, err
}
type ModelUser struct {
Id int64 `xorm:"id" json:"id"`
Name string `xorm:"name" json:"name"`
Salt *string `xorm:"salt" json:"salt"`
Age *int `xorm:"age" json:"age"`
Passwd *int `xorm:"passwd" json:"passwd,omitempty"`
Created string `xorm:"created" json:"created,omitempty"`
Updated string `xorm:"updated" json:"updated,omitempty"`
}
func (e ModelUser) TableName() string {
return "user"
}
數據庫中的值

程序運行一下
C:\Users\Josslynn\AppData\Local\Temp\GoLand\___1go_build_main_go__2_.exe
{1 dj 0xc000061fa0 0xc00001f070 0xc00001f088 2023-03-03 10:31:34 2023-03-03 10:31:34}
{3 <nil> <nil> <nil> }
{43 測試新增 <nil> <nil> <nil> 2023-05-23 15:02:12 2023-05-23 15:02:12}
{431 測試新增2 <nil> 0xc00001f130 <nil> 2023-05-23 15:19:17 2023-05-23 15:19:17}
{"1":{"id":1,"name":"dj","salt":"salt","age":18,"passwd":12345,"created":"2023-03-03 10:31:34","updated":"2023-03-03 10:31:34"},"3":{"id":3,"name":"","salt":null,"age":null},"43":{"id":43,"name":"測試","salt":null,"age":null,"created":"2023-05-23 15:02:12","updated":"2023-05-23 15:02:12"},"431":{"id":431,"name":"測試新增2","salt":null,"age":13,"created":"2023-05-23 15:19:17","updated":"2023-05-23 9:17"}}
指針可以讀到 數據庫的null 值, json 解析的時候 也能 轉成null 值。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
go?time.After優(yōu)化后性能提升34%內存減少67%
這篇文章主要介紹了go語言time.After優(yōu)化后性能提升34%內存減少67%實例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
解決Golang小數float64在實際工程中加減乘除的精度問題
這篇文章主要介紹了解決Golang小數float64在實際工程中加減乘除的精度問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03

