创建 Engine - XORM


本站和网页 https://xorm.io/zh/docs/chapter-01/1.engine/ 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

创建 Engine - XORM
XORMMain文档API博客SocialsGiteaQQ
ZH
简体中文EnglishExpandCollapse
创建Engine创建 Engine创建 Engine 组设置 Engine 组策略
定义表结构体名称映射前缀映射,后缀映射和缓存映射使用 Table 和 Tag 改变名称映射Column 属性定义Go与字段类型对应表
表结构操作获取数据库信息表操作创建索引和唯一索引同步数据库结构导入导出数据库结构和数据
插入数据插入数据创建时间Created
查询和统计数据查询条件方法临时开关方法Get方法Find方法Count方法Exist系列方法Iterate方法Join的使用Rows方法Sum系列方法
更新数据更新数据乐观锁Version更新时间Updated
删除数据删除数据软删除Deleted
执行SQL查询执行SQL查询
执行SQL命令执行SQL命令
事务处理事务处理
缓存缓存
事件事件
BuilderBuilder
Reverse 工具Reverse 工具
常见问题常见问题
案例案例
创建Engine创建 Engine创建 Engine 组设置 Engine 组策略
定义表结构体名称映射前缀映射,后缀映射和缓存映射使用 Table 和 Tag 改变名称映射Column 属性定义Go与字段类型对应表
表结构操作获取数据库信息表操作创建索引和唯一索引同步数据库结构导入导出数据库结构和数据
插入数据插入数据创建时间Created
查询和统计数据查询条件方法临时开关方法Get方法Find方法Count方法Exist系列方法Iterate方法Join的使用Rows方法Sum系列方法
更新数据更新数据乐观锁Version更新时间Updated
删除数据删除数据软删除Deleted
执行SQL查询执行SQL查询
执行SQL命令执行SQL命令
事务处理事务处理
缓存缓存
事件事件
BuilderBuilder
Reverse 工具Reverse 工具
常见问题常见问题
案例案例目录创建 Engine日志连接池首页Docs创建Engine创建 Engine创建 Engine目录创建 Engine日志连接池创建 Engine #所有操作均需要事先创建并配置 ORM 引擎才可以进行。XORM 支持两种 ORM 引擎,即 Engine 引擎和 Engine Group 引擎。一个 Engine 引擎用于对单个数据库进行操作,一个 Engine Group 引擎用于对读写分离的数据库或者负载均衡的数据库进行操作。Engine 引擎和 EngineGroup 引擎的API基本相同,所有适用于 Engine 的 API 基本上都适用于 EngineGroup,并且可以比较容易的从 Engine 引擎迁移到 EngineGroup 引擎。单个ORM引擎,也称为Engine。一个 APP 可以同时存在多个 Engine 引擎,一个Engine一般只对应一个数据库。Engine 通过调用 xorm.NewEngine 生成,如:import (
_ "github.com/go-sql-driver/mysql"
"xorm.io/xorm"
var engine *xorm.Engine
func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:[email protected]/test?charset=utf8")
orimport (
_ "github.com/mattn/go-sqlite3"
"xorm.io/xorm"
var engine *xorm.Engine
func main() {
var err error
engine, err = xorm.NewEngine("sqlite3", "./test.db")
你也可以用 NewEngineWithParams, NewEngineWithDB 和 NewEngineWithDialectAndDB
来创建引擎。一般情况下如果只操作一个数据库,只需要创建一个 engine 即可。engine 是 GoRoutine 安全的。创建完成 engine 之后,并没有立即连接数据库,此时可以通过 engine.Ping() 或者 engine.PingContext() 来进行数据库的连接测试是否可以连接到数据库。另外对于某些数据库有连接超时设置的,可以通过起一个定期Ping的Go程来保持连接鲜活。对于有大量数据并且需要分区的应用,也可以根据规则来创建多个Engine,比如:var err error
for i:=0;i<5;i++ {
engines[i], err = xorm.NewEngine("sqlite3", fmt.Sprintf("./test%d.db", i))
engine 可以通过 engine.Close 来手动关闭,但是一般情况下可以不用关闭,在程序退出时会自动关闭。NewEngine 传入的参数和sql.Open传入的参数完全相同,因此,在使用某个驱动前,请查看此驱动中关于传入参数的说明文档。以下为各个驱动的连接符对应的文档链接:sqlite3mysql dsnmymysqlpostgres在 engine 创建完成后可以进行一些设置,如:日志 #日志是一个接口,通过设置日志,可以显示SQL,警告以及错误等,默认的显示级别为 INFO。engine.ShowSQL(true),则会在控制台打印出生成的SQL语句;engine.Logger().SetLevel(log.LOG_DEBUG),则会在控制台打印调试及以上的信息;如果希望将信息不仅打印到控制台,而是保存为文件,那么可以通过类似如下的代码实现,NewSimpleLogger(w io.Writer)接收一个io.Writer接口来将数据写入到对应的设施中。f, err := os.Create("sql.log")
if err != nil {
println(err.Error())
return
engine.SetLogger(log.NewSimpleLogger(f))
当然,如果希望将日志记录到 syslog 中,也可以如下:logWriter, err := syslog.New(syslog.LOG_DEBUG, "rest-xorm-example")
if err != nil {
log.Fatalf("Fail to create xorm system logger: %v\n", err)
logger := log.NewSimpleLogger(logWriter)
logger.ShowSQL(true)
engine.SetLogger(logger)
你也可以自定义自己的接口,可通过日志接口中包含的 context 进行更详细的跟踪。连接池 #engine内部支持连接池接口和对应的函数。如果需要设置连接池的空闲数大小,可以使用 engine.SetMaxIdleConns() 来实现。如果需要设置最大打开连接数,则可以使用 engine.SetMaxOpenConns() 来实现。如果需要设置连接的最大生存时间,则可以使用 engine.SetConnMaxLifetime() 来实现。在 Gitea 上编辑此页面&larr; Go与字段类型对应表创建 Engine 组 &rarr;Powered by Netlify, Hugo, and Doks