获取数据库信息

  1. package main
  2. import (
  3. "fmt"
  4. _ "github.com/go-sql-driver/mysql"
  5. "github.com/go-xorm/xorm"
  6. "log"
  7. )
  8. var engine *xorm.Engine
  9. type User struct {
  10. ID int `xorm:"id"`
  11. Name string `xorm:"name"`
  12. }
  13. func main() {
  14. var err error
  15. engine, err = xorm.NewEngine("mysql", "root:123456@/test")
  16. if err != nil {
  17. log.Fatal(err)
  18. return
  19. }
  20. //xorm支持获取表结构信息,通过调用engine.DBMetas()可以获取到数据库中所有的表,字段,索引的信息。
  21. tbs, err := engine.DBMetas()
  22. if err != nil {
  23. log.Fatal(err)
  24. return
  25. }
  26. for i, tb := range tbs {
  27. fmt.Println("index:", i, "tbName", tb.Name)
  28. }
  29. /*输出
  30. index: 0 tbName prefix_user
  31. index: 1 tbName student
  32. */
  33. //TableInfo()根据传入的结构体指针及其对应的Tag,提取出模型对应的表结构信息。
  34. //这里不是数据库当前的表结构信息,而是我们通过struct建模时希望数据库的表的结构信息
  35. //比如user表的数据库当前有三个属性,但是只会打印出两个属性
  36. tableInfo:=engine.TableInfo(User{})
  37. columns:= tableInfo.Columns()
  38. for i,column := range columns{
  39. fmt.Println("index:",i," columnName:",column.Name)
  40. }
  41. /*輸出:
  42. index: 0 columnName: id
  43. index: 1 columnName: name*/
  44. }

表操作

  • 创建表使用engine.CreateTables(),参数为一个或多个空的对应Struct的指针。

    1. package main
    2. import (
    3. _ "github.com/go-sql-driver/mysql"
    4. "github.com/go-xorm/xorm"
    5. "log"
    6. )
    7. var engine *xorm.Engine
    8. type User1 struct {
    9. ID int `xorm:"id"`
    10. Name string `xorm:"name"`
    11. }
    12. func main() {
    13. var err error
    14. engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    15. if err != nil {
    16. log.Fatal(err)
    17. return
    18. }
    19. //创建表使用engine.CreateTables(),参数为一个或多个空的对应Struct的指针。
    20. err = engine.CreateTables(User1{})
    21. if err != nil {
    22. log.Fatal(err)
    23. return
    24. }
    25. }
  • IsTableEmpty()判断表是否为空,参数和CreateTables相同

    1. package main
    2. import (
    3. "fmt"
    4. _ "github.com/go-sql-driver/mysql"
    5. "github.com/go-xorm/xorm"
    6. "log"
    7. )
    8. var engine *xorm.Engine
    9. type User1 struct {
    10. ID int `xorm:"id"`
    11. Name string `xorm:"name"`
    12. }
    13. func main() {
    14. var err error
    15. engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    16. if err != nil {
    17. log.Fatal(err)
    18. return
    19. }
    20. //IsTableEmpty()判断表是否为空,参数和CreateTables相同
    21. re,err := engine.IsTableEmpty(User1{})
    22. if err!=nil {
    23. log.Fatal(err)
    24. return
    25. }
    26. fmt.Println(re)
    27. }
  • IsTableExist()判断表是否存在,参数和CreateTables相同

    1. package main
    2. import (
    3. "fmt"
    4. _ "github.com/go-sql-driver/mysql"
    5. "github.com/go-xorm/xorm"
    6. "log"
    7. )
    8. var engine *xorm.Engine
    9. type User1 struct {
    10. ID int `xorm:"id"`
    11. Name string `xorm:"name"`
    12. }
    13. type User2 struct {
    14. ID int `xorm:"id"`
    15. Name string `xorm:"name"`
    16. }
    17. func main() {
    18. var err error
    19. engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    20. if err != nil {
    21. log.Fatal(err)
    22. return
    23. }
    24. //IsTableExist()判断表是否存在,参数和CreateTables相同
    25. res,err := engine.IsTableExist(User1{})
    26. if err!=nil {
    27. log.Fatal(err)
    28. return
    29. }
    30. fmt.Println(res)
    31. //user1表之前建立过,所以输出为true
    32. res,err = engine.IsTableExist(User2{})
    33. if err!=nil {
    34. log.Fatal(err)
    35. return
    36. }
    37. fmt.Println(res)
    38. //之前没有建立过user2表中,所以输出为false
    39. }
  • 删除表使用engine.DropTables(),参数为一个或多个空的对应Struct的指针或者表的名字。

    1. package main
    2. import (
    3. _ "github.com/go-sql-driver/mysql"
    4. "github.com/go-xorm/xorm"
    5. "log"
    6. )
    7. var engine *xorm.Engine
    8. type User1 struct {
    9. ID int `xorm:"id"`
    10. Name string `xorm:"name"`
    11. }
    12. type User2 struct {
    13. ID int `xorm:"id"`
    14. Name string `xorm:"name"`
    15. }
    16. func main() {
    17. var err error
    18. engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    19. if err != nil {
    20. log.Fatal(err)
    21. return
    22. }
    23. // 如果为string传入,则只删除对应的表,如果传入的为Struct,则删除表的同时还会删除对应的索引。
    24. err = engine.DropTables(User1{})
    25. if err!=nil {
    26. log.Fatal(err)
    27. return
    28. }
    29. }

参考:http://gobook.io/read/github.com/go-xorm/manual-zh-CN/

xorm表结构操作实例的更多相关文章

  1. SQL 表结构操作

    数据库知识总结(表结构操作) 1.创建表Scores 1 create table Scores --表名 2 (Id int identity(1,1) primary key,--设置主键,并且行 ...

  2. SQL server学习(二)表结构操作、SQL函数、高级查询

    数据库查询的基本格式为: select ----输出(显示)你要查询出来的值 from -----查询的依据 where -----筛选条件(对依据(数据库中存在的表)) group by ----- ...

  3. mysql数据表的基本操作:表结构操作,字段操作

    本节介绍: 表结构操作 创建数据表. 查看数据表和查看字段. 修改数据表结构 删除数据表 字段操作 新增字段. 修改字段数据类型.位置或属性. 重命名字段 删除字段 首发时间:2018-02-18  ...

  4. mysql导出word的表结构操作

    mysql导出word的表结构操作 1.首先准备好mysql的相关插件mysql-connector-odbc和DBExportDoc 百度网盘地址: 链接:https://pan.baidu.com ...

  5. MySQL基础~~表结构操作

    登录数据库服务器 mysql -h127.0.0.1 -uroot -p123456 创建数据库 create database test; 显示所有数据库 show databases; 指定要操作 ...

  6. Oracle重建表空间操作实例

    由于环境维护或者性能测试需要,经常需要对表空间进行重建操作.重建表空间操作主要分3中情况介绍,分别是业务表空间.临时表空间和回滚段表空间的重建. 重建业务表空间 由于业务规划要求,重建后的业务表空间名 ...

  7. ORACLE表空间操作实例

    本文主要介绍oracle表空间常见的操作实例,包括创建.查询.增加.删除.修改.表空间和数据文件常用的数据字典和动态性能视图包括v$dbfile.v$datafile.v$tempfile.dba_s ...

  8. SQL Server 表结构操作

    一.创建表 --直接定义主外键 create table wallet( ID ) primary key, ,) not null, Name ) default '余额', Member_ID ) ...

  9. Hibernate之多对多表,操作实例

    多表操作之多对多关系简介 思路就是: 在数据库底层通过添加中间表来指定关联关系. 在双方的实体中添加一个保存对方的集合 在双方的配置文件中使用set标签和many-to-many标签来进行关联关系的配 ...

随机推荐

  1. T-MAX组--项目冲刺(第六天)

    T-MAX组--项目冲刺(第六天) THE SIXTH DAY 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--项 ...

  2. 教你如何使用QBDI动态二进制检测框架

    工具介绍 QBDI 全名为 QuarkslaB Dynamicbinary Instrumentation,它是一个模块化的跨平台以及跨架构的 DBI 框架.该工具目前支持 Linux.macOS.A ...

  3. (转)AutoML 与轻量模型大列表: awesome-AutoML-and-Lightweight-Models

    Awesome-AutoML-and-Lightweight-Models 原文:http://bbs.cvmart.net/articles/414/zi-yuan-automl-yu-qing-l ...

  4. 在input内添加小图标或文字(元/月)等

    文字: <td class="formValue"> <div class="input-group"> <input id=&q ...

  5. input标签在谷歌浏览器记住密码的自动填充问题

    //使用autocomplete="new-password" <Input type='password' autocomplete="new-password& ...

  6. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍

    笔记 1.分布式缓存Redis介绍      简介:讲解为什么要用缓存和介绍什么是Redis,新手练习工具          1.redis官网 https://redis.io/download   ...

  7. Python中__new__和__init__的区别与联系

    __new__ 负责对象的创建而 __init__ 负责对象的初始化. __new__:创建对象时调用,会返回当前对象的一个实例 __init__:创建完对象后调用,对当前对象的一些实例初始化,无返回 ...

  8. Qt tableView设置不可编辑

    main_ui.tableView_record->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToConten ...

  9. Tomcat 目录结构以及相关规范的介绍

    目录 安装tomcat tomcat目录结构 tomcat/bin目录 tomcat/conf目录 tomcat/logs目录 JavaEE对项目结构的规范 war包 安装Tomcat 参考:安装Ja ...

  10. Spring cloud微服务安全实战-4-1章节概述

    过渡到复杂的微服务场景下面. 搭建起一个简单的微服务架构,一个网关,一个安全中心,两个微服务,然后会看到如何将安全相关的问题解构出来放在网关上. 然后与OAuth协议整合起来.