Go数据库操作:2、xorm包-表结构操作

参考:表结构操作

1、获取数据库信息

         

1、DBMetas():获取表结构信息

         这个方法我直接点进去可以看到他其实是返回一个Table对象数组,然后每一个Table就是包含了表的元数据信息,很多属性其实不知道是干嘛的,但是有一些还是比较清楚地.

	// DBMetas Retrieve all tables, columns, indexes' informations from database.
	func (engine *Engine) DBMetas() ([]*core.Table, error) {}

在这里插入图片描述

2、TableInfo(Bean):获取对应表结构信息

         这个方法是根据传入的结构体映射来获取对应的Table元数据信息的。看一下这个方法的定义:

	// TableInfo get table info according to bean's content
	func (engine *Engine) TableInfo(bean interface{}) *Table {}

2、获取表信息

1、CreateTables(beans):根据结构体创建表

         他这个方法应该是支持批量的创建的,看这边传入的是一个不定变量的参数,看一下源代码:

	// CreateTables create tabls according bean
	func (engine *Engine) CreateTables(beans ...interface{}) error {}

         

2、IsTableEmpty():判断表中是否有数据

         这个方法感觉是简化了一步,正常判断数据应该是根据count的数量来查询,这个应该是直接给你计算了。

         

3、IsTableExist():判断表是否存在

          这个没得说,sql都能写出来
         

4、DropTables(beans):批量删除表

这个方法传入的也是不定参数,支持批量删除
         

3、索引

         

1、CreateIndexes(bean):创建索引

         这个方法好像是根据tag中的标签来创建的,这边传入的是一个Bean对象,映射到数据库表的实体对象

	// CreateIndexes create indexes
	func (engine *Engine) CreateIndexes(bean interface{}) error {}

         

2、CreateUniques(Bean):创建唯一索引

         这个方法和上面那个很类似,这个是创建唯一索引的方法

	// CreateUniques create uniques
	func (session *Session) CreateUniques(bean interface{}) error {}

注意: 这两个方法好像不会判断索引是否存在,如果一个索引已经存在的情况,再去创建会报错,我看源代码好像是没有对应的删除或者判断的操作。
         

4、同步数据库结构

         这个不知道作用是咋样,因为基本同步数据库结构是发生在不同的数据库之间,这边看的话他是用一个数据库引擎,同步的是同一个库的内容,还是说我这边理解有问题,建议查看原文:同步数据库结构

5、导入导出SQL脚本

         这个功能感觉还是比较使用的,像你在navicate中的导入导出操作基本也是通过这种io的方式去操作的。
         

1、导入SQL脚本

         这个有两个方法,一个是从文件中导入,一个是从Reader对象中导入:

	engine.Import(r io.Reader)    //从Reader中导入
	engine.ImportFile(fpath string)   //从文件中导入

         

2、导出SQL脚本

         有两个方法,一个是导出到文件,一个是导出到writer对象,可能后续会有操作:

	engine.DumpAll(w io.Writer)		//导出到writer对象
	engine.DumpAllFile(fpath string)   //导出到File中
发布了117 篇原创文章 · 获赞 15 · 访问量 5599

猜你喜欢

转载自blog.csdn.net/qq_34326321/article/details/105215582
今日推荐