orm 原生数据操作

  1 package main
  2 import (
  3     "fmt"
  4     "github.com/astaxie/beego"
  5     "github.com/astaxie/beego/logs"
  6         "os"
  7     "log"
  8     "strings"
  9         _ "github.com/go-sql-driver/mysql"
 10     _"cms/beegodb/models"
 11     "github.com/astaxie/beego/orm"
 12     "bufio"
 13     "cms/beegodb/models"
 14     "encoding/json"
 15 
 16     "strconv"
 17 )
 18 
 19 var ConsoleLogs *logs.BeeLogger
 20 var FileLogs *logs.BeeLogger
 21 func init(){
 22     ConsoleLogs = logs.NewLogger(1000)
 23     ConsoleLogs.SetLogger("console")
 24     FileLogs = logs.NewLogger(1000)
 25     FileLogs.SetLogger("file",`{"filename":”logs/log.log"}`)
 26 }
 27 func logmsg(str string)  {
 28     log := logs.NewLogger()
 29     log.Alert(str)
 30     log.SetLogger(logs.AdapterConsole)
 31     log.Debug("this is a debug message")
 32     r := bufio.NewReader(os.Stdin)
 33     for {
 34         fmt.Print("Command> ")
 35         b, _, _ := r.ReadLine()
 36         line := string(b)
 37         tokens := strings.Split(line, " ")
 38         fmt.Println("Command:", tokens[0])
 39     }
 40 }
 41 
 42 //多表查询
 43 func GetQuerList()  {
 44      var maps []orm.Params
 45      orm1 := orm.NewOrm()
 46      var sqlstr  string
 47      sqlstr ="SELECT us.id,us.name,us.pwd,us.pwd,";
 48      sqlstr+="ua.user_id,ua.id,ua.article_id,";
 49      sqlstr+="ar.article_type_id,ar.id,ar.arti_name,arts.id,arts.tname";
 50      sqlstr+=" from ";
 51      sqlstr+="user as us,user_articles as ua,article as ar,article_type as arts"
 52      sqlstr+=" WHERE us.id=ua.user_id and ar.article_type_id=arts.id"
 53      sql:=sqlstr;
 54      rs,err:=orm1.Raw(sql).Values(&maps)
 55      if err == nil {
 56         fmt.Printf("Result Nums: %d
",rs)
 57         for _, m := range maps {
 58             fmt.Println("用户:",m["name"],"密码:",m["pwd"],m["arti_name"],m["tname"])
 59         }
 60     }
 61     jsonData, err := json.Marshal(maps)
 62     fmt.Println("多条数据查询结果", maps," 
",jsonData)
 63     checkErr(err)
 64 }
 65 func QuerySqlAdd() {
 66     orm := orm.NewOrm()
 67     var sqlstr string
 68     var us models.User
 69     us.Name="dqh"
 70     us.Pwd="dqh"
 71     sqlstr = "insert into user (id,name,pwd) values(null, '"+us.Name+"','"+us.Pwd+"')";
 72     fmt.Println(sqlstr)
 73     res, err := orm.Raw(sqlstr).Exec()
 74     if err == nil {
 75         ins_id,_ := res.LastInsertId();
 76         fmt.Println("添加一行: ", ins_id)
 77     }
 78 }
 79 //删除数据
 80 func QuerySqldel() {
 81     orm := orm.NewOrm()
 82     var sqlstr string
 83     var us models.User
 84     us.Id = 109
 85     sqlstr = "delete from user where id =" + strconv.Itoa(us.Id)
 86     fmt.Println(sqlstr)
 87     res, err := orm.Raw(sqlstr).Exec()
 88     if err == nil {
 89         num, _ := res.RowsAffected()
 90         fmt.Println("mysql row affected nums: ", num)
 91     }
 92 }
 93 //更新数据
 94 func QuerySqlUp(){
 95     orm := orm.NewOrm()
 96     var sqlstr string
 97     var us models.User
 98     us.Name="44"
 99     us.Pwd="67"
100     us.Id=115
101     sqlstr ="update user set name="+us.Name+",pwd="+us.Pwd+" where id="+strconv.Itoa(us.Id)+""
102     fmt.Println(sqlstr)
103     res, err := orm.Raw(sqlstr).Exec()
104     if err == nil {
105         num, _ := res.RowsAffected()
106         fmt.Println("mysql row affected nums: ", num)
107     }
108 }
109 func GetQueryVlue()  {
110     var lists []orm.ParamsList
111     orm := orm.NewOrm()
112     num, err := orm.Raw("SELECT * FROM user").ValuesList(&lists)
113     if err == nil && num > 0 {
114         fmt.Println(lists[7][0]) // slene
115     }
116 }
117 //orm sql1行数据查询
118 func GetQueryRow() {
119     //1.创建user对象
120     var user models.User
121     //2.创建orm
122     orm := orm.NewOrm()
123     user.Id=118
124     //3.通过sql语句查询
125     err := orm.Raw("select * from user where id = ?",user.Id).QueryRow(&user)
126     //4.处理错误
127     if err != nil {
128         fmt.Println("err = ", err)
129         beego.Info("查询出错!")
130         return
131     }
132     //5.打印结果
133     fmt.Println("输出", user.Name)
134     beego.Info("查询成功!")
135 
136 }
137 func SelectById(id int)  models.User {
138     var us models.User
139     o:=orm.NewOrm()
140     id=122
141     us.Id=id
142     _ = o.Raw("select * from user where id=?", id).QueryRow(&us)
143     return us
144 }
145 func main()  {
146     //insertorm()
147     GetQueryRow()
148     GetQuerList()
149     GetQueryVlue()
150     QuerySqlAdd()
151     QuerySqlUp()
152     QuerySqldel()
153     updateorm()
154     chercorm()
155     delorm()
156     beego.Run()
157 }
158 //orm更新
159 func updateorm(){
160     o := orm.NewOrm()
161     //2.查询要更新的结构体对象
162     user := models.User{}
163     //3.查询需要更新的数据
164     user.Id = 118
165     err := o.Read(&user)
166     if err == nil {
167         user.Name = "999"
168         //5.更新
169         _, err := o.Update(&user)
170         if err != nil {
171             logmsg("更新失败")
172             fmt.Println("gxsb")
173             return
174         }
175         logmsg("更新成功")
176     }
177 }
178 //orm添加
179 func insertorm()  {
180     FileLogs.Alert("进入插入orm")
181     o := orm.NewOrm()
182     user :=models.User{}
183     user.Name="admin"
184     user.Pwd="admin"
185     _,err := o.Insert(&user) //一定是地址
186     checkErr(err)
187     logmsg("插入成功")
188 }
189 //orm查询
190 func chercorm()  {
191     o := orm.NewOrm()
192     user := models.User{}
193     user.Name = "admin"
194     user.Id = 114
195     err := o.Read(&user, "Name", "Id")
196     if err != nil {
197         beego.Info("查询失败", err)
198         logmsg("查询失败")
199         return
200     }
201     logmsg("查询成功")
202 }
203 //orm删除
204 func delorm(){
205     o := orm.NewOrm()
206     user:=models.User{}
207     user.Id=114
208     _,err:=o.Delete(&user,"Id")
209     if err != nil {
210         logmsg("删除失败")
211         return
212     }
213     logmsg("删除成功")
214 }
215 func checkErr(err error){
216     if err != nil {
217         //panic(err)
218         log.Fatal(err)
219     }
220 }
原文地址:https://www.cnblogs.com/dqh123/p/13879780.html