当前位置:网站首页>gin中模型中增删改查+搜索分页
gin中模型中增删改查+搜索分页
2022-08-09 08:46:00 【tjg888888】
模型里代码:
package models import ( db "awesomeProject/databases" "fmt" _ "gopkg.in/gin-gonic/gin.v1/json" ) type User struct { ID int `json:"id"` Name string `json:"name"` Gender int `json:"gender"` Age int `json:"age"` } //增加 func (user *User) AddUser() bool { var rs, err = db.SqlDB.Exec("insert into user (name,gender,age)value (?,?,?)", user.Name, user.Gender, user.Age) if err!=nil{ return false } id,err:=rs.LastInsertId() fmt.Println(id) if err!=nil{ return false }else{ return true } } //修改 func (user *User) EditUser() bool { rs,err:=db.SqlDB.Exec("update user set name=?,gender=?,age=? where id=?",user.Name,user.Gender,user.Age,user.ID) if err!=nil{ return false } id,err:=rs.RowsAffected() if err!=nil{ return false }else { fmt.Println(id) return true } } //删除 func DeleteUser(Id int) bool { rs,err:=db.SqlDB.Exec("Delete from user where id=?",Id) if err!=nil{ return false } id,err:=rs.RowsAffected() if err!=nil{ return false }else { fmt.Println(id) return true } } //列表 func GetUserList(pageno,pagesize int,search string)(users []User) { //fmt.Println("搜索关键词",search) users=make([]User,0) //sql搜索分页查询语句 if search!=""{ rows,err:=db.SqlDB.Query("select * from user where name like '%"+search+"%' limit ?,?",(pageno-1)*pagesize,pagesize) //fmt.Println(rows.Close()) if err!=nil{ return nil } defer rows.Close() //数据添加到数据集中 for rows.Next(){ var user User rows.Scan(&user.ID,&user.Name,&user.Gender,&user.Age) users=append(users,user) } //fmt.Println(users) if err = rows.Err(); err != nil { return nil } }else{ rows,err:=db.SqlDB.Query("select * from user limit ?,?",(pageno-1)*pagesize,pagesize) //fmt.Println(rows.Close()) if err!=nil{ return nil } defer rows.Close() //数据添加到数据集中 for rows.Next(){ var user User rows.Scan(&user.ID,&user.Name,&user.Gender,&user.Age) users=append(users,user) //fmt.Println(users) } if err = rows.Err(); err != nil { return nil } } return users } //用户数 func GetUserNum(search string)int{ num:=0; //查询分页语句 if search!=""{ rows,err:=db.SqlDB.Query("select * from user where name like '%"+search+"%'") if err!=nil{ return 0 } defer rows.Close() for rows.Next(){ num++; } }else { rows,err:=db.SqlDB.Query("select * from user") if err!=nil{ return 0 } defer rows.Close() for rows.Next(){ num++ } } return num } //获取单条数据 func GetUserById(Id int)(users * User) { var user User err:=db.SqlDB.QueryRow("select * from user where id=?",Id).Scan(&user.ID,&user.Name,&user.Gender,&user.Age) if err!=nil{ fmt.Println(err) } return &user }
//根目录下main.go文件里代码:
package main import ( "database/sql" "github.com/gin-gonic/gin" "log" "net/http" "strconv" "awesomeProject/models" ) var db *sql.DB var err error type User struct { ID int `json:"id"` Name string `json:"name"` Gender int `json:"gender"` Age int `json:"age"` } func main() { var err error //初始化数据库连接池,连接信息(数据库类型mysql,数据库用户名root,数据库密码为空,数据库ip:127.0.0.1,端口3306,数据库名imooc) db,err=sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/imooc?parseTime=true") if err != nil{ log.Fatalln(err) } //定义数据库操作 defer db.Close() //设置数据库空闲连接 db.SetMaxIdleConns(20) //设置数据库最大打开连接 db.SetMaxOpenConns(20) if err := db.Ping(); err != nil{ log.Fatalln(err) } //设置路由 router := gin.Default() //增加一条记录 router.POST("/add",AddUserApi) //查询列表 router.GET("/list",ListUserApi) //查询单条记录 router.GET("/find",FindUserApi) //修改单条记录 router.PUT("/update",UpdateUserApi) //删除某条记录 router.DELETE("delete",DeleteUserApi) //本地监听8080端口运行该程序 router.Run("0.0.0.0:8080") } //增加接口 func AddUserApi(c *gin.Context) { //接值 name:=c.Request.FormValue("name") cgender:=c.Request.FormValue("gender") gender,_:=strconv.Atoi(cgender) cage:=c.Request.FormValue("age") age,_:=strconv.Atoi(cage) //赋值 user:=models.User{ Name:name, Gender: gender, Age: age, } //调用模型中增加方法 user.AddUser() } //查询列表接口 func ListUserApi(c *gin.Context) { //参数 search:=c.Request.FormValue("search") num:=c.Request.FormValue("pageno") pageno,_:=strconv.Atoi(num) if err!=nil{ log.Fatalln(err) } //得到数据集 datalist:=models.GetUserList(pageno,1,search) //得到记录的总数 count:=models.GetUserNum(search) c.JSON(http.StatusOK,gin.H{ "datalist":datalist, "count":count, "pagesize":1, "pageno":pageno, }) } //查询单条记录接口 func FindUserApi(c *gin.Context) { //参数 ids:=c.Request.FormValue("id"); id,_:=strconv.Atoi(ids); res:=models.GetUserById(id); c.JSON(http.StatusOK,gin.H{ "res":res, "code":200, }) } //修改单条记录接口 func UpdateUserApi(c *gin.Context) { //接值 ids:=c.Request.FormValue("id"); id,_:=strconv.Atoi(ids); name:=c.Request.FormValue("name") cgender:=c.Request.FormValue("gender") gender,_:=strconv.Atoi(cgender) cage:=c.Request.FormValue("age") age,_:=strconv.Atoi(cage) //赋值 user:=models.User{ ID:id, Name:name, Gender: gender, Age: age, } //调用模型中修改方法 user.EditUser() c.JSON(http.StatusOK,gin.H{ "msg":"修改成功", "code":200, }) } //删除某条记录接口 func DeleteUserApi(c *gin.Context) { //接值 ids:=c.Request.FormValue("id"); id,_:=strconv.Atoi(ids); models.DeleteUser(id) c.JSON(http.StatusOK,gin.H{ "msg":"删除成功", "code":200, }) }
边栏推荐
猜你喜欢
随机推荐
[MySQL]mysql: Solve the problem of [Err] 1093 - You can't specify target table 'table name' for update in FROM clause
文献检索作业代码
QT设置exe可执行文件的图标
UE4 RTS frame selection function implementation
nyoj306 走迷宫(搜索+二分)
[Vulnerability reproduction] CVE-2018-12613 (remote file inclusion)
MySQL数据库
小程序调用百度api实现图像识别
Process synchronization and mutual exclusion problem
LAN Technology - 6MSTP
nyoj58 最少步数(DFS)
BUUCTF MISC刷题笔记(一)
Boot process and service control
get一个小技巧,教你如何在typora写文章上传图片到博客上
jdbctemplate connects to sql server, the data found in the code is inconsistent with the database, how to solve it?
网络层协议介绍
VNCTF2021 部分题目复现
VLAN的原理及配置
系统安全及应用
6000 字+,帮你搞懂互联网架构演变历程!