首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏大猪的笔记

    xorm使用小结

    xorm是一个go的orm框架。用起来还挺难用的。 f_id" xorm:"not null pk autoincr INT(11)"` Name string `json:"f_name" xorm:"not null comment /go-xorm/cmd/blob/master/README.md ) 可执行放到$PATH下面,然后执行: cd /home/yzh/goxorm xorm reverse mysql "root: charset=utf8" /home/yzh/goxorm 为了方便,我把xorm_linux给提取出来了: xorm_linux_x64.zip 创建引擎 要使用xorm,在项目中,初始化一个engine 就行了 engine, err := xorm.NewEngine("mysql", "root:123456@tcp(10.10.30.99:3306)/test?

    2.7K10发布于 2019-11-21
  • 来自专栏软件

    go的xorm框架

    xorm框架 xorm框架和Spring Data Jpa有点相似,可以对比学习,对于这个框架感觉还不错,闲暇时间学习一下 一、创建数据库连接 xorm支持单引擎和多引擎,多引擎的场景对于初学者来说,没有必要考虑 ,所以我们主要学习的是单引擎的数据库连接,为了方便检查SQL,需要启用打印功能,默认不开启 var engine *xorm.Engine func main() { var err error engine, err = xorm.NewEngine("mysql", "root:123456@tcp(127.0.0.1:3306)/myschool? type Student struct { modle.Student `xorm:"extends"` modle.Grade `xorm:"extends"` } // 查询年纪时三年纪的学生 相信自己,本文章内容可以参考文档 http://xorm.topgoer.com/

    1.6K50发布于 2021-08-10
  • 来自专栏code人生

    每日一库:xorm

    以下是 xorm 的一些主要特点: 1.简化数据库操作: xorm 封装了数据库操作,使得 CRUD(增删改查)等常见操作更加简单,开发者可以专注于业务逻辑而不必过多关注底层的数据库操作。 11.插件系统: xorm 提供了插件系统,可以方便地扩展功能,满足不同项目的需求。12.活跃的社区和维护: xorm 有活跃的社区支持,持续开发和维护,保持了稳定的更新和改进。 1. 安装 xorm 首先,你需要使用 go get 命令来安装 xorm 包: go get xorm.io/xorm 2. 然后,你可以使用 xorm.NewEngine 函数来创建一个 xorm.Engine 对象,用于执行数据库操作。 定义模型 xorm 支持通过结构体来定义数据库表模型。在结构体字段上使用 xorm 的标签来指定字段名、主键、自增等属性。

    1.1K20编辑于 2023-10-16
  • 来自专栏code人生

    如何选择gorm、xorm、ent、sqlx

    2.XORM:•XORM 是一个简单且强大的 ORM 库,提供了基本的 CRUD 操作、事务和迁移等功能。 •XORM 支持多种数据库,包括 MySQL、PostgreSQL、SQLite、MSSQL、TiDB 等。•XORM 的 API 设计简洁,易于理解和使用。 •XORM 的错误处理比 GORM 更直观,它在任何失败的操作后都会返回错误。•但是,XORM 的功能相比 GORM 和 ent 来说较为基础,可能需要手动编写更多的代码。 •但是,ent 的学习曲线可能比 GORM 和 XORM 更陡峭,因为它使用了一些高级的 Go 特性。 如果你需要一个简单且强大的 ORM,XORM 可能更适合你。如果你希望使用类型安全的代码来操作数据库,那么 ent 可能是你的最佳选择。

    4.3K30编辑于 2023-10-16
  • 来自专栏Golang语言社区

    golang-xorm库快速学习

    xorm xorm是一个Go语言ORM库. 通过它可以使数据库操作非常简便. :"unique"` Balance float64 Version int `xorm:"version"` // 乐观锁 } var x *xorm.Engine 创建orm引擎 注意 不过,想要使用它也并不困难,只需要在获取到 ORM 引擎之后,进行如下操作: cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000) x.SetDefaultCacher string `xorm:"unique"` Balance float64 Version int `xorm:"version"` // 乐观锁 } // ORM 引擎 var x *xorm.Engine func init() { // 创建 ORM 引擎与数据库 var err error x, err = xorm.NewEngine("mysql

    2.9K80发布于 2018-03-28
  • 来自专栏GoUpUp

    Go 每日一库之 xorm

    string `xorm:"varchar(200)"` Created time.Time `xorm:"created"` Updated time.Time `xorm:"updated 除此之外xorm支持只返回指定的列(xorm.Cols())或忽略特定的列(xorm.Omit()): func main() { engine, _ := xorm.NewEngine("mysql 注意log.NewSimpleLogger(f)是xorm的子包xorm.io/xorm/log提供的简单日志封装,而非标准库log。 time.Time `xorm:"updated"` DeletedAt time.Time `xorm:"deleted"` } func main() { engine, _ := xorm.NewEngine 参考 xorm GitHub:https://github.com/go-xorm/xorm xorm 手册:http://gobook.io/read/gitea.com/xorm/manual-zh-CN

    1.6K30发布于 2020-09-08
  • 来自专栏Golang语言开发栈

    Go 语言使用 XORM 操作 MySQL 的陷阱

    本文我们来介绍一下使用 XORM[3] 操作 MySQL 可能会遇到的陷阱。 示例代码: package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "xorm.io/xorm" ) func main( 更新 created 字段 我们在结构体中,使用标签 xorm:created 和 xorm:updated 即可自动插入当前时间。 但是,使用 xorm:created 标签的字段,只有在第一次插入数据时写入当前时间,此后将不再会更改;使用 xorm:updated 标签的字段,在第一次插入数据时写入当前时间,此后每次 Update 如果我们的业务需求是需要更改使用 xorm:created 标签的字段,可以做到吗?

    74420编辑于 2023-08-09
  • 来自专栏林冠宏的技术文章

    基于 xorm 的服务端框架 XGoServer

    数据加密传输等 具备的 日志模块,alecthomas/log4go 路由模块,gorilla/mux 硬存储 / 软存储 采用 xorm 框架 多路 gorutine 设计,增加并发性能 服务端通用的输出数据结构的整合 服务端配置 json 文件 -- server.json, 日志配置文件 -- log.json 例如下面的,他们都会在运行程序后会自动解析和读取 2 threeLibs 目录放置了依赖的第三方库,例如 xorm util.LogInfo("http error ===> : "+err.Error()) return } } // 绑定配置 json 的信息 以及 初始化 xorm

    73710发布于 2018-09-19
  • 来自专栏林冠宏的技术文章

    基于 xorm 的服务端框架 XGoServer

    数据加密传输等 具备的 日志模块,alecthomas/log4go 路由模块,gorilla/mux 硬存储 / 软存储 采用 xorm 框架 多路 gorutine 设计,增加并发性能 服务端通用的输出数据结构的整合 服务端配置 json 文件 -- server.json, 日志配置文件 -- log.json 例如下面的,他们都会在运行程序后会自动解析和读取 2 threeLibs 目录放置了依赖的第三方库,例如 xorm util.LogInfo("http error ===> : "+err.Error()) return } } // 绑定配置 json 的信息 以及 初始化 xorm

    86850发布于 2018-02-11
  • 来自专栏LinkinStar's Blog

    如何使用 xorm 在执行前改写 SQL

    尝试过程 如果你只想知道如何使用,可跳过本段,直接去看最后的实现部分 一开始我做了各种尝试,由于 xorm 本身其实并没有相关文档说明,寻找并尝试了半天,虽然最后实现了,但是路径比较曲折。 SQL type Filter interface { Do(sql string) string } Filter 原本的作用是帮助 dialect 去过滤一些特殊数据库的特殊 SQL 来帮助 xorm (m *MyFilter) Do(ctx context.Context, sql string) string { return "/** 获取信息,改写sql **/" + sql } 然后 xorm 并且使用 OpenDialect 方法将默认原先 xorm 的 mysql 对应的 Dialect 拿出来封装成自己的。 = nil { panic(err) } engine, err := xorm.NewEngineWithDialectAndDB(driver, connection, s, dbs) if err

    93420编辑于 2023-10-18
  • 来自专栏Golang语言社区

    基于框架gin+xorm搭建的MVC项目

    session.Set("count", count) 13 session.Save() 14 ctx.JSON(200, gin.H{"count": count}) 15} 3、基于xorm ("mysql_slave").Keys() 3for _, s_dsn := range slaves { 4 _dbs, err := xorm.NewEngine("mysql", s_dsn.String 1//定时程序启动 2c := cron.New() 3//数据库状态检查 4c.AddFunc("*/600 * * * * *", models.DbCheck) 5c.Start() cmd/xorm 安装注意事项 正常安装命令: 1go get github.com/go-xorm/cmd/xorm 但会报错,有两个包无法安装, 1cloud.google.com/go/civil 2golang.org 运行命令 1go build 查看帮助 xorm help reverse xorm生成struct 1xorm reverse mysql "root:12345678@tcp(dbm1.baidu.com

    2.2K21发布于 2019-05-08
  • 来自专栏前端少年汪的博客

    一文入门gorm和xorm的基本操作(CRUD)

    // CoonXormMysql 连接数据库 package main import ( "fmt" _ "gorm.io/driver/mysql" "time" "xorm.io/xorm" ) , 10, 1001) 完整代码 package main import ( "fmt" _ "gorm.io/driver/mysql" "time" "xorm.io/xorm 的一个最简单的crud的基本操作了,当然gorm和xorm的功能远不止如此,更多的特性和功能可以在开发过程中查阅其官网即可 gorm 和 xorm 的区别 gorm 和 xorm 都是 Go 语言中常用的 性能表现不同:根据各自的 benchmark 结果,xorm 的性能通常比 gorm 更高,并且 xorm 对于连接池的处理也更优秀。 总体来说,gorm 和 xorm 的目标群体有所不同,gorm 更适合那些需要严格符合 SQL 标准、更加稳定的场景,而 xorm 更适用于需要灵活性和可扩展性的场景。

    1.1K50编辑于 2023-11-21
  • 来自专栏LinkinStar's Blog

    使用 xorm 实现多数据库支持坑点总结

    最近我正在使用 xorm 做多数据库类型的适配总结了以下问题供参考。 engine, err := xorm.NewEngine(driver, connection) if err ! time.Time `xorm:"updated TIMESTAMP updated_at"` Username string `xorm:"not null default '' VARCHAR bool `xorm:"not null default false BOOL is_admin"` } 对于字段,只需要根据 xorm 文档中给出的规范,写好对应的 tag 就可以 https ://xorm.io/zh/docs/chapter-02/4.columns/ 注意点 不同数据库中字段的类型不同,在 tag 中一定要书写 xorm 的类型,而非数据库的类型,比如上述所示中写的是

    1.8K10编辑于 2022-10-31
  • 来自专栏黑客下午茶

    云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第4篇

    string `xorm:"not null VARCHAR(64) default"` Role int `xorm:"not null TINYINT(3) default 1"` Status int `xorm:"not null TINYINT(3) default 1"` IsOnline int `xorm:"not string `xorm:"not null VARCHAR(512) default"` PubKey string `xorm:"not null VARCHAR `xorm:"not null index BIGINT(20) default 0"` FirstRechargeAt int64 `xorm:"not null index BIGINT(20 string `xorm:"not null VARCHAR(40) default"` Model string `xorm:"not null VARCHAR(64) default"`

    83420发布于 2021-05-27
  • 来自专栏Golang语言开发栈

    Go 应用程序设计标准

    :"varchar(30) notnull default '' unique comment('用户名')"` Email string `json:"email" xorm:"varchar `json:"updated" xorm:"updated"` Deleted int `json:"deleted" xorm:"deleted"` } type UserUsecase 示例代码: package mysql import ( "context" "go_standard/domain" "xorm.io/xorm" ) type mysqlUserRepository struct { Conn *xorm.Engine } func NewMysqlUserRepository(Conn *xorm.Engine) domain.UserRepository /xorm" ) func main() { db, err := xorm.NewEngine("mysql", "root:root@/go_standard?

    34310编辑于 2022-05-17
  • 来自专栏LinkinStar's Blog

    Golang 单元测试 - 数据层

    (这里仅给出最基本的实现,重点主要关注在单元测试上) package repo import ( "context" "go-demo/m/unit-test/entity" "xorm.io } func NewUserRepo(db *xorm.Engine) UserRepo { return &userRepo{db: db} } func (ur userRepo) AddUser /xorm" "xorm.io/xorm/schemas" ) type TestDBSetting struct { Driver string ImageName string parseTime=true", } tearDown func() testDataSource *xorm.Engine ) func TestMain(t *testing.M , err error) { dbEngine, err = xorm.NewEngine(dbSetting.Driver, dbSetting.Connection) if err !

    1.2K20编辑于 2023-02-22
  • 来自专栏hotqin888的专栏

    gorm jion查询映射(扫描scan)到新的结构体,必须使用select规定字段,与xorm的jion对比

    xorm的这种操作不需要select字段。 如下是xorm的jion: type OnlyOfficeAttach struct { OnlyOffice `xorm:"extends"` OnlyAttachment `xorm:" extends"` User `xorm:"extends"` } //分页取得所有项目 func GetDocList(offset, limit int) (docs []*

    2.5K20发布于 2020-08-05
  • 来自专栏Golang语言开发栈

    Go 语言微服务框架 Kratos 操作 MySQL 和 Redis

    本文我们以 XORM 和 Go Redis 为例,介绍 Kratos 微服务框架怎么集成 XORM[1] 和 Go Redis[2] 操作 MySQL 和 Redis。 安装 xorm 示例代码: go get xorm.io/xorm 安装 go redis 示例代码: go get github.com/redis/go-redis/v9 客户端 编写文件 导入第三方库 import ( _ "github.com/go-sql-driver/mysql" "github.com/redis/go-redis/v9" "xorm.io/xorm" ) 添加 xorm 和 go redis 客户端 // Data . type Data struct { // TODO wrapped database client dbEngine *xorm.Engine 参考资料 [1] XORM: https://xorm.io/ [2] Go Redis: https://redis.uptrace.dev/

    46110编辑于 2024-12-30
  • 来自专栏GopherCoder

    Go web 教程

    :"extends"` ProductIds []int `xorm:"blob"` Status int AccountId int64 Account `xorm:"index"` ShopId int64 `xorm:"index"` } ORM ORM 的思想是对象映射成数据库表。 数据库表创建、删除等 在 Go 中比较流行的 ORM 库是: GORM 和 XORM ,数据库表的定义等规则,主要从结构体字段和 Tag 入手。 // XORM type Account struct { base `xorm:"extends"` Phone string `xorm:"varchar(11) Token string `xorm:"varchar(128) 'token'" json:"token"` Avatar string `xorm:"varchar(128

    1.4K30发布于 2019-06-21
  • 来自专栏从运维安全到DevSecOps

    轻量级开源SAST工具semgrep分析1/2

    ORM的支持 语言 框架 支持情况 python django/flask/boto/sqlalchemy 一般 java spring 较好 go gorilla/grpc/pgorm(目前我们还实现了xorm 准确率是最高 完全需要定制规则 测试 近期我们团队在对PCG开源代码仓库做安全编码规范扫描,目前已使用codeql编写了go sql拼接的相关规则,当时为了验证semgrep的扫描效果,我们也针对部分使用xorm 扫描速度 semgrep 61 58/61 每条规则4500 loc/sec codeql 44 42/44 无具体统计,但不高于每条规则600 loc/sec 规则定制难度 根据大概估算,查找、理解xorm sql执行的sink点大概需要30分钟,编写xorm拼接靶场代码需要20分钟,加上编写规则15分钟,全程花费在1个小时左右,而使用codeql开发,单纯编写规则就要0.5个人天,可以看到semgrep , m["field"], m["op"]), value) 而从xorm sql注入的角度来看,该规则未优化前的误报率可能在50%左右,甚至更高。

    1.9K30编辑于 2022-06-21
领券