xorm

news/2025/2/7 16:40:08/文章来源:https://www.cnblogs.com/lwx11111/p/18702849

1.引擎

XORM支持两种 ORM 引擎,即 Engine 引擎和 Engine Group 引擎
一个 Engine 引擎用于对单个数据库进行操作,一个 Engine Group 引擎用于对读写分离的数据库或者负载均衡的数据库进行操作。Engine 引擎和 EngineGroup 引擎的API基本相同,所有适用于 Engine 的API基本上都适用于 EngineGroup

1.1 单引擎

engine是GoRoutine安全的,一个引擎对应一个数据库

import ("fmt"_ "github.com/go-sql-driver/mysql""github.com/go-xorm/xorm"_ "github.com/lib/pq"
)var engine *xorm.Engine
func main() {// 创建enginevar err errorengine, err = xorm.NewEngine("postgres", "postgres://username:password@dev@ip:5432/databaseName?sslmode=disable&search_path=schemaName")if err != nil {fmt.Print(err)}// 延迟关闭数据库连接defer engine.Close()
}

2.日志

	// 打印SQL语句engine.ShowSQL(true)

3.表结构

3.1 表定义

// TableName 定义 table_name表的结构体
type TableName struct {Id     string `xorm:"not null"`Name   string `xorm:"not null"`
}

3.2 字段属性

xorm:"varchar(25) notnull unique 'usr_name' comment('姓名')"

3.3 数据库信息

	// 获取所有表的元数据信息dbMetas, err := engine.DBMetas()if err != nil {fmt.Println("Failed to get DBMetas:", err)return}// 遍历并打印每个表的元数据信息for _, dbMeta := range dbMetas {fmt.Printf("Table Name: %s\n", dbMeta.Name)fmt.Println("Columns:")for _, col := range dbMeta.Columns() {fmt.Printf("  - Name: %s, Type: %s, Nullable: %v, Primary Key: %v\n", col.Name, col.SQLType.Name, col.Nullable, col.IsPrimaryKey)}fmt.Println("Indexes:")for _, index := range dbMeta.Indexes {fmt.Printf("  - Name: %s, Type: %s, Columns: %v\n", index.Name, index.Type, index.Cols)}fmt.Println("--------------------------------------------------")}

4. 增

	// 插入数据config := &TableName{Id:     "123321",Module: "moduleTest",Type:   "TypeTest",Lang:   "zh_Ch",}inserted, err := engine.Insert(config)if err != nil {fmt.Println("Failed to insert data:", err)return}fmt.Printf("Inserted %d record(s)\n", inserted)

5. 删

// 删除数据affected, err := engine.ID(config.Id).Delete(config)if err != nil {fmt.Println("Failed to delete data:", err)return}fmt.Printf("Deleted %d record(s)\n", affected)

6. 改

	//更新数据config.Module = "Hello, World!"affected, err := engine.ID(config.Id).Update(config)if err != nil {fmt.Println("Failed to update data:", err)return}fmt.Printf("Updated %d record(s)\n", affected)

7. 查

	// 查询数据var configs []CrmLangConfigerr = engine.Find(&configs)if err != nil {fmt.Println("Failed to query data:", err)return}fmt.Println("Query Results:")for _, cfg := range configs {fmt.Printf(cfg.Module)}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880108.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 一次成功安装 k8s集群

Ubuntu系统设置静态固定IP保姆级教程 修改主机名 sudo hostnamectl set-hostname k8s-master关闭防火墙 systemctl status ufw.service systemctl stop ufw.service systemctl disable ufw.serviceapt-get update安装docker apt install -y docker.iosudo mkdir -p /etc/docker…

高标准农田智慧管理系统

随着科技的飞速发展,智慧农业已成为推动农业现代化的重要力量。高标准农田智慧管理系统作为智慧农业的核心组成部分,正逐步改变着传统农业的生产方式。本文将深入探讨高标准农田智慧管理系统的建设内容,以期为我国农业的可持续发展提供新的思路和方向。一、高标准农田智慧管…

老年人评估系统web端

项目结构项目实现 用到了springboot mybatis框架 vue ajax axios element 成品效果自动刷新的信息查询点击注册跳转 跳转之后的注册页面点击返回可回到主页面点击删除按钮跳转的页面点击更正信息弹出的form表单 项目功能基本实现

【土地交易大揭秘】哪些用地必须走“招拍挂”之路?

今天咱们来聊聊一个在土地市场里热度颇高的话题——哪些用地必须通过招标、拍卖或者挂牌方式出让?这可是关乎城市建设和房地产开发的大事,对投资者和普通市民来说,了解这一点至关重要。下面,我们就来深入浅出地解读一番。招标、拍卖、挂牌出让简述首先,普及一下基本概念。…

python脚本与命令行交互sys.argv

前言在 Python 编程的世界里,sys.argv 是一个强大且实用的工具,它为我们开启了与命令行交互的大门,让程序能够接收外部传入的参数,从而实现更加灵活和多样化的功能。今天,就让我们深入探索 sys.argv 的奥秘。 “argv” 即 “argument value” 是一个列表对象,其中存储的是…

奶奶都能看懂的 CSS 选择器基础语法常用属性优先级

标题都是奶奶都能看懂了,那么我们肯定从最基础的开始讲。之所以这么自信是因为能踩的坑全帮你们踩过了…… 开始之前,先来首诗感受一下,具体啥意思你看完本文就懂了。 点类井号逗为或,类多号单连为且。 id 优先类在后,类型选择在末尾。 代码优先难解决,拿出鼠标数一数。 …

本地部署大模型体验小记

本地部署大模型的工具工具 优缺点LM Studio 图形界面友好,支持API访问,参数配置灵活Ollama GPU优化不足,CPU占用率高Chatbox 易出现输入卡顿,交互体验待优化Ollama 和 Chatbox 需要配合使用。 综合看更推荐使用 LM Studio 。 自定义模型 LM Studio 和 Ollama 除了使用默认的…

oi-math 重修

OI 数学重修 注: 很多东西没来得及写例题和代码,以后遇到会补上 想了一下虽然还有很多没写完,但是这两天要开数学了,决定后面的分成一个一个博客写然后在这挂链接,所以发出来了。 主题是看着 oi-wiki 写的,但细节上尤其是证明部分不太一样,毕竟也不是什么教学性质的,权…

方差、标准差、变异系数举例

一、标准差,也称均方差,是方差的算术平方根,标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。太绕了,上例子:1、先找出平均数。平均数是数据的平均值,把数据加起来然后除以数据个数就可以得到。2、再找出方差。方差是数据偏离平均数的程度。得…

中电金信:大咖漫话|如何营销AI赋能的远程银行

看过“从远程银行看AIGC”连载,今天将与各位漫话AI的营销“哲学”。祝各位事业蟠蟠,巳巳如意,我们开年再会!