<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ToyormGo 語言實(shí)現(xiàn)的 ORM 庫

          聯(lián)合創(chuàng)作 · 2023-09-30 01:53

          使用 go 實(shí)現(xiàn)的 orm 庫,用 go 的結(jié)構(gòu)體與數(shù)據(jù)庫表關(guān)聯(lián),來簡化各種數(shù)據(jù)庫操作。

          特性:

          1. 語句與查詢:支持Insert/Replace/Find/Delete/Update等操作

          2. 條件:支持Limit/Offset/Where/Group by/Order by 

          3. 支持事務(wù)

          4. 預(yù)加載:基于表主鍵的關(guān)聯(lián)查詢 支持BelongTo/OneToOne/OneToMany/ManyToMany 4種模式

          5. 預(yù)加載條件:操作預(yù)加載的表和操作基本表一樣

          6. 預(yù)加載查詢聚合:對于預(yù)加載字段會優(yōu)化成Where id in [...]的查詢,一個(gè)預(yù)加載字段永遠(yuǎn)只占一個(gè)Select

          7. Result:生成數(shù)據(jù)庫語句報(bào)告和語句導(dǎo)致的錯誤,支持預(yù)加載模式

          8. 上下文結(jié)構(gòu),可以在數(shù)據(jù)庫語句邏輯中插入自定義邏輯

          9. Collection:多數(shù)據(jù)庫操作,該模式下的數(shù)據(jù)必須擁有主鍵,auto_increment模式失效

          10. toy-doctor(檢查FieldSelection參數(shù)錯誤)

          支持 mysql, sqlite3

          go版本 >1.9

          安裝

          go get github.com/bigpigeon/toyorm

          快速開始

          package main
          
          import (
          "github.com/bigpigeon/toyorm"
          _ "github.com/mattn/go-sqlite3"
          . "unsafe"
          )
          
          type Product struct {
          toyorm.ModelDefault
          Name  string
          Price int
          }
          
          func panicErr(err error) {
          if err != nil {
          panic(err)
          }
          }
          
          func main() {
          toy, err := toyorm.Open("sqlite3", "mydb.db")
          panicErr(err)
          defer func() {
          err := toy.Close()
          panicErr(err)
          }()
          // create ToyBrick
          brick := toy.Model(&Product{}).Debug()
          // create table
          _, err = brick.CreateTable()
          panicErr(err)
          
          // insert product
          _, err = brick.Insert(&Product{
          Name:  "apple",
          Price: 22,
          })
          panicErr(err)
          // update product
          _, err = brick.Where("=", Offsetof(Product{}.Name), "apple").Update(Product{Price: 23})
          panicErr(err)
          var product Product
          // find
          _, err = brick.Find(&product)
          panicErr(err)
          // delete
          _, err = brick.Delete(&product)
          panicErr(err)
          }
          瀏覽 14
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91啪啪麻豆视频 | 国产福利精品视频 | 免费a视频在线 | 波多野吉衣被操50分钟 | 高清无码污视频 |