| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -179,6 +179,70 @@ func (this *Query) Clean() *Query { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return this | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//获取表格信息
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					func (this *Query) GetTableInfo(table string) (map[string]interface{}, error) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						field := []string{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"COLUMN_NAME",    //字段名
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"COLUMN_DEFAULT", //默认值
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"DATA_TYPE",      //数据类型
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"COLUMN_TYPE",    //数据类型+长度
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"COLUMN_COMMENT", //备注
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"IS_NULLABLE",    //是否为空
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						sql := "select `" + strings.Join(field, "`,`") + "` from information_schema.COLUMNS where table_name = ? and table_schema = ?" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						stmtSql, err := this.conn.Prepare(sql) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if err != nil { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return nil, err | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						list, err := StmtForQueryList(stmtSql, []interface{}{table, this.dbname}) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if err != nil { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return nil, err | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						rows := make([]interface{}, 0, len(list)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						fieldName := make([]string, 0, len(list)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for _, item := range list { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							info := map[string]interface{}{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								"name":        "", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								"column_type": "", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								"is_null":     true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								"data_type":   "", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								"comment":     "", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								"default":     "", | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for _, k := range field { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								index := helper.StrFirstToUpper(k) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if v, ok := item[index]; ok { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									switch k { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									case "COLUMN_NAME": | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										info["name"] = v | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									case "COLUMN_DEFAULT": | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										info["default"] = v | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									case "DATA_TYPE": | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										info["data_type"] = v | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									case "COLUMN_TYPE": | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										info["column_type"] = helper.ToInt64(v) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									case "COLUMN_COMMENT": | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										info["comment"] = helper.ToInt64(v) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									case "IS_NULLABLE": | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										if v == "NO" { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											info["is_null"] = false | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							name := helper.ToStr(info["name"]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if name != "" { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								rows = append(rows, info) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								fieldName = append(fieldName, name) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return map[string]interface{}{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"field": fieldName, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							"list":  rows, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						}, nil | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//构造子查询
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					func (this *Query) BuildSelectSql() (map[string]interface{}, error) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if this.dbname == "" && this.table == "" { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |