xorm框架介绍

xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。 通过xorm框架,开发者可以方便的使用各种封装好的方法来代替原生的sql语句。这样就降低了我们开发者使用数据库的门槛。本节内容,我们将通过xorm相关知识的学习,来逐步掌握在代码中如何操作数据库。 读者也可以通过相关的学习文档进行xorm框架的学习,如下是xorm框架相关的学习文档:

支持数据库驱动列表

同其他对象关系映射框架一样,xorm也支持连接、操作多种数据库,包括:mysql、mymysql、postgres、tidb、sqlite、mssql、oracle(测试)。具体的每一种数据库类型的驱动安装如下:

xorm安装

go get github.com/go-xorm/xorm

mysql连接示例

本节内容中,我们将以连接mysql为案例,演示xorm的相关操作。

  • 创建引擎

engine, err := xorm.NewEngine(driverName, dataSourceName)

如上通过xorm.NewEngine方法创建一个数据库操作引擎,该方法需要两个参数:driveName和dataSourceName。在mysql引擎连接中,两个参数如下:

driverName := "mysql"
dataSrouceName := "用户名:密码@/数据库名称?charset=utf8"

另外,需要格外注意一点,需要在使用数据库引擎创建的地方导入对应的数据库引擎驱动,比如本节内容中的mysql数据库,引擎导入语句如下:

_ "github.com/go-sql-driver/mysql"

mysql连接配置

  • 设置自动同步结构体到数据库 xorm框架的engine数据库引擎,提供了engine.Sync()方法,允许开发者将自定义的结构体同步到数据库中。 随着xorm框架不断更新和迭代,在Sync方法的基础上,又提供了Sync2方法,用于将结构体同步更新到数据库中。Sync2方法主要的特性是:

    • 自动检测和创建表

    • 自动检测和新增表中的字段名

    • 自动检测创建和删除索引

    • 自动转换varchar字段类型到text字段类型

    • 自动警告字段的默认值

      err = engine.Sync2(new(model.Permission), new(model.City), new(model.Admin), new(model.AdminPermission), new(model.User))

    如上是Sync2方法的使用方法

  • 其他设置

    • 是否显示SQL语句(开发调试时使用)

      engine.ShowSQL(true)
    • 设置数据库最大连接数

      engine.SetMaxOpenConns(10)
    • 设置最大空闲连接数量:默认是2

      engine.SetMaxIdleConns(5)

    本节课我们介绍了xorm框架的基本内容和学习文档,以及如何连接mysql数据库,并进行相关设置的内容。下节课我们将学习xorm框架如何具体实现数据库的操作相关的方法。

 

最新文章

  1. centos6.4下面安装postgresql以及客户端远程连接
  2. hadoop的概念
  3. factor graph model
  4. 2016.04.28,英语,《Vocabulary Builder》Unit 20
  5. session讲解(一)——登录网页练习
  6. tagName和nodeName的区别
  7. linux下怎么编译运行C语言程序?
  8. 小白日记52:kali渗透测试之Web渗透-HTTPS攻击(Openssl、sslscan、sslyze、检查SSL的网站)
  9. c#基础语言编程-集合
  10. 转:Google技术开发指南:给大学生自学的建议
  11. Android学习路线(二十)运用Fragment构建动态UI
  12. 关于在打包Jar文件时遇到的资源路径问题(二)
  13. 请问如何在PS中将一张图标里的各个小图标分离成一个个图标?
  14. PAT 甲级真题题解(63-120)
  15. 在线排错之curl命令详解
  16. Docker管理工具 - Swarm部署记录
  17. sql 一列拼接成一行,再分割成列
  18. GSM中时隙、信道、突发序列、帧的解释
  19. Linux内核同步 - Read/Write spin lock
  20. ES6系列_15之class类的使用

热门文章

  1. 深度学习—池化、padding的理解
  2. hdu 1864 最大报销额(01背包)
  3. L99
  4. inux命令学习笔记(13):less 命令
  5. uoj problem 11 ydc的大树
  6. bzoj 3996 线性代数 —— 最大权闭合子图
  7. django基础PROJECT APP View template
  8. poj 1658 Eva's Problem(水题)
  9. POJ1365:质因数分解
  10. HDOJ1025(最长上升子序列)