beego 模块化model
beego 模块化model
1.修改TestMode.go中文件
package controllers import ( //"fmt" "myFristPro/models" "github.com/astaxie/beego" //"github.com/astaxie/beego/orm" //_ "github.com/go-sql-driver/mysql" ) //model的表示UserTable,操作数据库中的表名叫user_table /*type UserTable struct { Id int64 Username string Password string } */ type TestModelController struct { beego.Controller } func (c *TestModelController) Get() { user := models.UserTable{Username: "Banana", Password: "banana"} models.AddUser(&user) c.Ctx.WriteString("call model success!") } /* func (c *TestModelController) Get() { orm.Debug = true //打开调试模式 //注册数据库 //参数一:默认default //参数二:数据库类型MySQL //参数三:数据库用户名:密码@tcp(ip:port)/数据库名?charset=utf8为字符编码格式 //参数四:超时时间 orm.RegisterDataBase("default", "mysql", "test:test@tcp(192.168.5.200:3306)/testdb?charset=utf8", 30) //注册UserTabele表 orm.RegisterModel(new(UserTable)) //申明对象 o := orm.NewOrm() //设置数据 //user := UserTable{Username: "xiaoming", Password: "123456"} //插入数据 //id, err := o.Insert(&user) /* //读取数据 u := UserTable{Id: 1} err := o.Read(&u) if err == orm.ErrNoRows { fmt.Println("查询不到") } else if err == orm.ErrMissPK { fmt.Println("找不到主键") } else { fmt.Println(u.Id, u.Username) } //修改数据 u.Username = "Xiao Hua" u.Password = "654321" o.Update(&u) //web上显示内容 //c.Ctx.WriteString(fmt.Sprintf("id: %d err: %v", id, err)) //自带原生读取函数 var maps []orm.Params o.Raw("select *from user_table").Values(&maps) for _, v := range maps { c.Ctx.WriteString(fmt.Sprintf("user_table: %v\n", v)) } */ //采用newquerybuilder方式读取 /* var users []UserTable qb, _ := orm.NewQueryBuilder("mysql") qb.Select("password").From("user_table").Where("username= ?").Limit(1) sql := qb.String() o.Raw(sql, "Xiao Hua").QueryRows(&users) c.Ctx.WriteString(fmt.Sprintf("user_table: %v\n", users)) } */
2.在models目录中添加user.go文件
1>.模块化插入user
package models import ( "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) //model的表示UserTable,操作数据库中的表名叫user_table type UserTable struct { Id int64 Username string Password string } var ( db orm.Ormer ) func init() { orm.Debug = true //注册数据库 //参数一:默认default //参数二:数据库类型MySQL //参数三:数据库用户名:密码@tcp(ip:port)/数据库名?charset=utf8为字符编码格式 //参数四:超时时间 orm.RegisterDataBase("default", "mysql", "test:test@tcp(192.168.5.200:3306)/testdb?charset=utf8", 30) //注册UserTabele表 orm.RegisterModel(new(UserTable)) db = orm.NewOrm() } func AddUser(user_table *UserTable) (int64, error) { id, err := db.Insert(user_table) return id, err } //api生产的模板 //bee api /* import ( "errors" "strconv" "time" ) var ( UserList map[string]*User ) func init() { UserList = make(map[string]*User) u := User{"user_11111", "astaxie", "11111", Profile{"male", 20, "Singapore", "astaxie@gmail.com"}} UserList["user_11111"] = &u } type User struct { Id string Username string Password string Profile Profile } type Profile struct { Gender string Age int Address string Email string } func AddUser(u User) string { u.Id = "user_" + strconv.FormatInt(time.Now().UnixNano(), 10) UserList[u.Id] = &u return u.Id } func GetUser(uid string) (u *User, err error) { if u, ok := UserList[uid]; ok { return u, nil } return nil, errors.New("User not exists") } func GetAllUsers() map[string]*User { return UserList } func UpdateUser(uid string, uu *User) (a *User, err error) { if u, ok := UserList[uid]; ok { if uu.Username != "" { u.Username = uu.Username } if uu.Password != "" { u.Password = uu.Password } if uu.Profile.Age != 0 { u.Profile.Age = uu.Profile.Age } if uu.Profile.Address != "" { u.Profile.Address = uu.Profile.Address } if uu.Profile.Gender != "" { u.Profile.Gender = uu.Profile.Gender } if uu.Profile.Email != "" { u.Profile.Email = uu.Profile.Email } return u, nil } return nil, errors.New("User Not Exist") } func Login(username, password string) bool { for _, u := range UserList { if u.Username == username && u.Password == password { return true } } return false } func DeleteUser(uid string) { delete(UserList, uid) } */