xorm表结构操作实例
获取数据库信息
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
)
var engine *xorm.Engine
type User struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
}
func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
}
//xorm支持获取表结构信息,通过调用engine.DBMetas()可以获取到数据库中所有的表,字段,索引的信息。
tbs, err := engine.DBMetas()
if err != nil {
log.Fatal(err)
return
}
for i, tb := range tbs {
fmt.Println("index:", i, "tbName", tb.Name)
}
/*输出
index: 0 tbName prefix_user
index: 1 tbName student
*/
//TableInfo()根据传入的结构体指针及其对应的Tag,提取出模型对应的表结构信息。
//这里不是数据库当前的表结构信息,而是我们通过struct建模时希望数据库的表的结构信息
//比如user表的数据库当前有三个属性,但是只会打印出两个属性
tableInfo:=engine.TableInfo(User{})
columns:= tableInfo.Columns()
for i,column := range columns{
fmt.Println("index:",i," columnName:",column.Name)
}
/*輸出:
index: 0 columnName: id
index: 1 columnName: name*/
}
表操作
创建表使用engine.CreateTables(),参数为一个或多个空的对应Struct的指针。
package main import (
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
) var engine *xorm.Engine type User1 struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
} func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
} //创建表使用engine.CreateTables(),参数为一个或多个空的对应Struct的指针。
err = engine.CreateTables(User1{})
if err != nil {
log.Fatal(err)
return
}
}
IsTableEmpty()判断表是否为空,参数和CreateTables相同
package main import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
) var engine *xorm.Engine type User1 struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
} func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
} //IsTableEmpty()判断表是否为空,参数和CreateTables相同
re,err := engine.IsTableEmpty(User1{})
if err!=nil {
log.Fatal(err)
return
}
fmt.Println(re)
}
IsTableExist()判断表是否存在,参数和CreateTables相同
package main import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
) var engine *xorm.Engine type User1 struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
} type User2 struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
} func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
} //IsTableExist()判断表是否存在,参数和CreateTables相同
res,err := engine.IsTableExist(User1{})
if err!=nil {
log.Fatal(err)
return
}
fmt.Println(res)
//user1表之前建立过,所以输出为true res,err = engine.IsTableExist(User2{})
if err!=nil {
log.Fatal(err)
return
}
fmt.Println(res)
//之前没有建立过user2表中,所以输出为false
}
删除表使用engine.DropTables(),参数为一个或多个空的对应Struct的指针或者表的名字。
package main import (
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
) var engine *xorm.Engine type User1 struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
} type User2 struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
} func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
} // 如果为string传入,则只删除对应的表,如果传入的为Struct,则删除表的同时还会删除对应的索引。
err = engine.DropTables(User1{})
if err!=nil {
log.Fatal(err)
return
}
}
参考:http://gobook.io/read/github.com/go-xorm/manual-zh-CN/
xorm表结构操作实例的更多相关文章
- SQL 表结构操作
数据库知识总结(表结构操作) 1.创建表Scores 1 create table Scores --表名 2 (Id int identity(1,1) primary key,--设置主键,并且行 ...
- SQL server学习(二)表结构操作、SQL函数、高级查询
数据库查询的基本格式为: select ----输出(显示)你要查询出来的值 from -----查询的依据 where -----筛选条件(对依据(数据库中存在的表)) group by ----- ...
- mysql数据表的基本操作:表结构操作,字段操作
本节介绍: 表结构操作 创建数据表. 查看数据表和查看字段. 修改数据表结构 删除数据表 字段操作 新增字段. 修改字段数据类型.位置或属性. 重命名字段 删除字段 首发时间:2018-02-18 ...
- mysql导出word的表结构操作
mysql导出word的表结构操作 1.首先准备好mysql的相关插件mysql-connector-odbc和DBExportDoc 百度网盘地址: 链接:https://pan.baidu.com ...
- MySQL基础~~表结构操作
登录数据库服务器 mysql -h127.0.0.1 -uroot -p123456 创建数据库 create database test; 显示所有数据库 show databases; 指定要操作 ...
- Oracle重建表空间操作实例
由于环境维护或者性能测试需要,经常需要对表空间进行重建操作.重建表空间操作主要分3中情况介绍,分别是业务表空间.临时表空间和回滚段表空间的重建. 重建业务表空间 由于业务规划要求,重建后的业务表空间名 ...
- ORACLE表空间操作实例
本文主要介绍oracle表空间常见的操作实例,包括创建.查询.增加.删除.修改.表空间和数据文件常用的数据字典和动态性能视图包括v$dbfile.v$datafile.v$tempfile.dba_s ...
- SQL Server 表结构操作
一.创建表 --直接定义主外键 create table wallet( ID ) primary key, ,) not null, Name ) default '余额', Member_ID ) ...
- Hibernate之多对多表,操作实例
多表操作之多对多关系简介 思路就是: 在数据库底层通过添加中间表来指定关联关系. 在双方的实体中添加一个保存对方的集合 在双方的配置文件中使用set标签和many-to-many标签来进行关联关系的配 ...
随机推荐
- 第07组 Alpha冲刺(1/6)
队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:完成了,网页后端的大部分工作.负责了很大一部分的后端工作. 展示GitHub当日代码/文档签入记录 ...
- 全新的Unity跨平台开发 IDE JetBrains Rider 2019.2 x64特别版下载
Rider 基于 JetBrains 的平台,JetBrains 的平台很受那些使用 IntelliJ IDEA 的 Java 开发者和使用 WebStorm 的 JavaScript 开发者的欢迎. ...
- 数据缺失值的处理 | R包 - mice
有些情况下缺失值会零星的分布在数据当中,这时去掉所有包含缺失值的样本就不行了,直接用0去填补缺失值也不行. 所以此时就应该用拟合的方法来填补缺失值. library(mice) init = mice ...
- tansition-group 使用方法
<transition-group name="breadcrumb"> <el-breadcrumb-item v-for="(item,index) ...
- 在dubbo工程中,使用druid监控
介绍:在dubbo项目中,使用druid的监控功能 问题:因为,在网上找勒,很多的资料,显示的都是需要在web.xml中配置 <servlet> <servlet-name>D ...
- ionic4 路由跳转、ionic4 路由跳转传值 NavController 返回上一页 、NavController 回到根
1.普通路由跳转 <ion-button [routerLink]="['/pinfo']"> 跳转到详情 </ion-button> <ion-he ...
- php5.6.30环境报错Call to undefined function ImageCreate() 编译安装 gd库
php5..30环境报错Call to undefined function ImageCreate() 编译安装 gd库 发现php5..30没有加载gd库 [root@cn_vs_web04:/u ...
- ISO/IEC 9899:2011 条款6.2——概念
6.2 概念 6.2.1 标识符的作用域 6.2.2 标识符的连接 6.2.3 标识符的名字空间 6.2.4 对象的存储持久性 6.2.5 类型 6.2.6 类型的表示 6.2.7 兼容类型与组合类型 ...
- linux系统执行.exe文件
首先要了解一下Wine: Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 ...
- springboot启动提示连接mysql报错:java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
如题,启动springboot报错: -- :: --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized wi ...