全部产品
Search
文档中心

Lindorm:Menggunakan pustaka GORM untuk mengembangkan aplikasi

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan pustaka GORM untuk terhubung dan menggunakan LindormTable.

Prasyarat

Prosedur

  1. Dalam file go.mod proyek Go Anda, tambahkan dependensi GORM.

    require (
        gorm.io/driver/mysql v1.5.1
        gorm.io/gorm v1.25.4
    )
  2. Konfigurasikan parameter koneksi.

    dsn := "<user>:<password>@tcp(<lidnorm_mysql_url>:33060)/<database>"

    Parameter

    Parameter

    Deskripsi

    user

    Jika Anda lupa kata sandi Anda, Anda dapat mengubah kata sandi dalam sistem manajemen kluster LindormTable. Untuk informasi lebih lanjut, lihat Kelola pengguna.

    password

    lindorm_mysql_url

    LindormTable endpoint for MySQL. Untuk informasi lebih lanjut tentang cara memperoleh titik akhir, lihat Lihat titik akhir.

    Penting
    • Jika aplikasi Anda diterapkan pada instance ECS, kami sarankan Anda menggunakan VPC untuk terhubung ke instance Lindorm guna memastikan keamanan yang lebih tinggi dan latensi jaringan yang lebih rendah.

    • Jika aplikasi Anda diterapkan pada server lokal dan perlu terhubung ke instance Lindorm melalui Internet, Anda dapat melakukan langkah-langkah berikut untuk mengaktifkan titik akhir Internet untuk instance tersebut di konsol Lindorm: Di panel navigasi sisi kiri, pilih Database Connections > Wide Table Engine. Pada tab Wide Table Engine, klik Enable Public Endpoint.

    • Jika Anda menggunakan VPC untuk mengakses instance Lindorm, tentukan LindormTable VPC endpoint for MySQL dalam nilai lindorm_mysql_url. Jika Anda menggunakan Internet untuk mengakses instance Lindorm, tentukan LindormTable Internet endpoint for MySQL dalam nilai lindorm_mysql_url.

    database

    Nama database yang ingin Anda hubungkan. Secara default, klien Anda terhubung ke database bernama default.

  3. Buat koneksi dan gunakan SQL LindormTable untuk melakukan operasi di LindormTable. Blok kode berikut memberikan contoh cara menggunakan SQL LindormTable untuk membuat tabel:

    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }
    // Perhatian: Nonaktifkan transaksi karena LindormTable tidak mendukung transaksi.
    session := db.Session(&gorm.Session{SkipDefaultTransaction: true})
    
    // Buat tabel bernama Product.
    err = session.Migrator().CreateTable(&Product{})
    if err != nil {
        panic(err)
    }

Contoh kode

Berikut ini adalah kode lengkap yang menunjukkan cara terhubung dan menggunakan LindormTable dengan menggunakan pustaka GORM:

package main

import (
    "fmt"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

// Tentukan hubungan pemetaan antara kolom dalam tabel dengan elemen yang sesuai di GORM.
type Product struct {
    // Tentukan kolom ID sebagai kunci utama. Setel penambahan otomatis ke false karena penambahan otomatis tidak didukung oleh LindormTable.
    ID    int64  `gorm:"primaryKey;autoIncrement:false"`
    // Peta tipe data string ke varchar di GORM. Jika tidak, tipe data longtext tidak didukung dalam kolom.
    Code  string `gorm:"type:varchar"`
    Price float64
}

func main() {
    // Setel user ke nama pengguna yang digunakan untuk mengakses LindormTable.
    // Setel password ke kata sandi yang digunakan untuk mengakses LindormTable.
    // Setel lindorm_mysql_url ke titik akhir LindormTable untuk MySQL.
    // Setel database ke database yang ingin Anda hubungkan.
    dsn := "user:test@tcp(ld-uf6k8yqb741t3****-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060)/default"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }
    // Perhatian: Nonaktifkan transaksi karena LindormTable tidak mendukung transaksi.
    session := db.Session(&gorm.Session{SkipDefaultTransaction: true})

    // Membuat tabel.
    err = session.Migrator().CreateTable(&Product{})
    if err != nil {
        panic(err)
    }

    // Tulis baris data yang nilainya di kolom ID adalah 1 ke tabel.
    tx := session.Debug().Create(&Product{ID: 1, Code: "D42", Price: 100.1})
    err = tx.Error
    if err != nil {
        panic(err)
    }

    // Tulis baris data yang nilainya di kolom ID adalah 2 ke tabel.
    tx = session.Debug().Create(&Product{ID: 2, Code: "B41", Price: 105.5})
    err = tx.Error
    if err != nil {
        panic(err)
    }

    var product1 Product
    // Kueri data yang nilainya di kolom ID adalah 1.
    session.Debug().First(&product1, 1) // Kueri data yang nilainya dari kunci utama adalah 1.
    fmt.Println(product1)

    var product2 Product
    // Kueri data yang nilainya di kolom ID adalah 2.
    session.Debug().First(&product2, "code = ?", "B41") // Kueri data yang nilainya di kolom Code adalah B41.
    fmt.Println(product2)


    // Dalam data yang nilainya di kolom ID adalah 1, perbarui nilai di kolom Price menjadi 101.8.
    session.Debug().Model(&Product{}).Where("id = ?", 1).Update("price", 101.8)
    product1 = Product{}
    
    // Kueri data yang nilainya kunci utamanya adalah 1.
    session.Debug().First(&product1, 1)
    fmt.Println(product1)

    // Hapus nilai dalam data yang nilainya kunci utamanya adalah 1.
    session.Delete(&Product{}, 1)
    product1 = Product{}
    session.Debug().First(&product1, 1)
    fmt.Println(product1)
}

Setelah kode sebelumnya dijalankan, log yang berisi hasil kueri berikut dikembalikan:

{1 D42 100.1}
{2 B41 105.5}
{1 D42 101.8}
{0  0}