Topik ini menjelaskan cara menggunakan pustaka GORM untuk terhubung dan menggunakan LindormTable.
Prasyarat
Go sudah diinstal. Kami merekomendasikan Anda menginstal Go versi 1.17 atau yang lebih baru. Untuk informasi lebih lanjut tentang cara menginstal Go, lihat Unduh dan Instal.
Versi LindormTable adalah 2.6.1 atau yang lebih baru. Untuk informasi lebih lanjut tentang cara melihat atau meningkatkan versi LindormTable, lihat Catatan Rilis LindormTable dan Tingkatkan Versi Mesin Minor dari Instance Lindorm.
Fitur kompatibilitas MySQL diaktifkan untuk instance tersebut. Untuk informasi lebih lanjut, lihat Aktifkan Fitur Kompatibilitas MySQL.
Alamat IP klien Anda ditambahkan ke daftar putih instance Lindorm Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih.
Prosedur
Dalam file go.mod proyek Go Anda, tambahkan dependensi GORM.
require ( gorm.io/driver/mysql v1.5.1 gorm.io/gorm v1.25.4 )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.
PentingJika 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 . 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.
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}