gin中模型中增删改查+搜索分页

模型里代码:

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,
   })
}


你可能感兴趣的:(gin)