Bootstrap

gorm 同一个表结构创建多张表


//示意代码

type TableX struct {
	...
	...

	// table name
	TblName string `gorm:"-"`
}

func (v TableX) TableName() string {
	return v.TblName
}

func NewTableX(tblname string) *TableX {
	return &TableX{TblName: tblname}
}

// 创建表 
func create() {
	db * gorm.DB
	m := NewTableX("tablename")
	db.CreateTable(m)
}

//指定表名查询, 对TblName 进行赋值
func query(tblName string) {

	db * gorm.DB
	var items []TableX
	db.Table(tblName).Where(&TableX{..., TblName: tblName}).Where(......).Find(&items)

}

// 查询数据库中所有表名
func queryAllTblName() []string {

	sqlStr := fmt.Sprintf("select table_name from information_schema.tables where table_schema='public'"+
		" And table_name like '%s%%';", 表名前缀)

	rows, err := dao.DB().Query(sqlStr)
	if err != nil {
		logging.GetLogger().Errorf("%s failed. err:%s", sqlStr, err.Error())
		return nil
	}

	var results []string
	for rows.Next() {
		var tblName string
		err := rows.Scan(&tblName)
		if err != nil {
			logging.GetLogger().Infof("Sacn table failed, err:%+s", err.Error())
		} else {
			results = append(results, tblName)
		}

	}

	return results
}

;