xorm根据数据库表生成对应的结构体
来源:互联网 发布:mac maven .m2文件夹 编辑:程序博客网 时间:2024/05/17 22:58
引入
使用 golang 操作数据库的同学都会遇到一个问题 —— 根据数据表结构创建对应的 struct 模型。因为 golang 的使用首字母控制可见范围,我们经常要设计 struct 字段名和数据库字段名的对应关系。久而久之,这是一个非常繁琐的过程。事情变得繁琐了,我们都会想,有没有好的办法自动生成 model 呢?今天,记录一种自动生成代码的方法 —— xorm 工具。
关于 xorm
xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。我在项目中经常使用,它的特性如下:
- 支持Struct和数据库表之间的灵活映射,并支持自动同步表结构
- 事务支持
- 支持原始SQL语句和ORM操作的混合执行
- 使用连写来简化调用
- 支持使用Id, In, Where, Limit, Join, Having, Table, Sql, Cols等函数和结构体等方式作为条件
- 支持级联加载Struct
- 支持LRU缓存(支持memory, memcache, leveldb, redis缓存Store) 和 Redis缓存
- 支持反转,即根据数据库自动生成xorm的结构体
- 支持事件
- 支持created, updated, deleted和version记录版本(即乐观锁)
想了解更多请移步:http://www.xorm.io/
xorm 工具
xorm 是一组数据库操作命令的工具,包含如下命令:
- reverse 反转一个数据库结构,生成代码
- shell 通用的数据库操作客户端,可对数据库结构和数据操作
- dump Dump数据库中所有结构和数据到标准输出
- source 从标注输入中执行SQL文件
- driver 列出所有支持的数据库驱动
那我们该如何使用 reverse 命令根据数据表结构生成 go 代码呢?
首先我们要下载该工具 :
go get github.com/go-xorm/cmd/xorm
同时需要安装对应的 driver :
go get github.com/go-sql-driver/mysql //安装mysql驱动//go get github.com/ziutek/mymysql/godrv //MyMysql//go get github.com/lib/pq //Postgres//go get github.com/mattn/go-sqlite3 //SQLite
还需要下载 xorm :
go get github.com/go-xorm/xorm
编译 cmd/xorm
会生成 xorm 工具, 假如环境变量。
这时候,执行 xorm help reverse
能获取帮助信息如下:
usage: xorm reverse [-s] driverName datasourceName tmplPath [generatedPath] [tableFilterReg]according database's tables and columns to generate codes for Go, C++ and etc. -s Generated one go file for every table driverName Database driver name, now supported four: mysql mymysql sqlite3 postgres datasourceName Database connection uri, for detail infomation please visit driver's project page tmplPath Template dir for generated. the default templates dir has provide 1 template generatedPath This parameter is optional, if blank, the default value is model, then will generated all codes in model dir tableFilterReg Table name filter regexp
可以知道,执行参数 -s 表示为每张表创建一个单独文件。接下来的参数依次是:驱动,数据源,模板目录(在源码的 /cmd/xorm/templates/goxorm
可根据需求定制),生成目录,表格过滤条件。
接下来我们以 Mysql 为例介绍使用方法。
xorm reverse mysql name:password@(ip:port)/xxx?charset=utf8 /cmd/xorm/templates/goxorm [可选your project model path]
这里输出目录参数省略,会在当前目录建立一个 model
目录,该目录下就是自动生成的 go 代码,, 驼峰命名方式。具体内容如下:
package modeltype TestModel struct { Id int `json:"id" xorm:"not null pk autoincr INT(11)"` VpsName string `json:"vps_name" xorm:"VARCHAR(30)"` VpsIp string `json:"vps_ip" xorm:"CHAR(15)"` VpsPrivateIp string `json:"vps_private_ip" xorm:"CHAR(50)"` VpsCpu int `json:"vps_cpu" xorm:"INT(11)"` VpsMem int `json:"vps_mem" xorm:"INT(11)"` VpsDisk int `json:"vps_disk" xorm:"INT(11)"` VpsStatus string `json:"vps_status" xorm:"VARCHAR(255)"` LastHeartTime int `json:"last_heart_time" xorm:"INT(11)"` CreateTime int `json:"create_time" xorm:"INT(11)"` LastTime int `json:"last_time" xorm:"INT(11)"`}
到这里,就生成了我们想要的 model , 免去了手写的繁琐过程。
总结
照例总结一波,引用看到过一句话:
如果一个工具能让我节省 1s 的时间,我愿意花一天的时间去找或者开发这个工具!
原文地址:https://www.cnblogs.com/artong0416/p/7456674.html
- xorm根据数据库表生成对应的结构体
- 根据数据库表结构生成javabean的eclipse插件
- 根据数据库表结构生成javabean的eclipse插件
- 根据数据库结构生成TreeView
- 根据数据库结构生成TreeView
- 根据数据库表结构自动生成类结构
- 在结构体中根据名字调用对应的函数
- 如何读取mysql数据库表结构生成对应的java类
- 根据数据库名生成数据库结构说明
- Mybatis中根据数据库表结构自动生成dao层等代码的工具及其步骤
- 根据颜色生成对应的image
- 利用JDBC连接池封装类自动根据mysql数据库生成对应的model类
- 根据PowerDesigner的模型生成数据库表
- 使用xorm将结构体转为sql文件
- vector类型为结构体,根据结构体成员来删除对应的结点
- xorm 的基本操作
- XORM 的复杂操作
- xorm的基本使用
- 使用Androidstudio开发一个简单的音乐播放器
- 一、jena解析关于基因的go.owl文件(正在学习中)
- JavaWeb笔记
- ubuntu boot not enough space
- mybatis的dao中@param注解
- xorm根据数据库表生成对应的结构体
- 虫子爬井(有待改进)
- hbase写的报错
- 使用java socket理解tcp协议
- java版的跳转操作
- 安装TensorFlow后 import tensorflow 报错
- Intellij IDEA 本人快捷键和个人喜好设置笔记
- 构建可重复读取inputStream的request
- Fresco简单应用