当前位置: 首页 > news >正文

go-xorm连接

package mainimport ("fmt"_ "github.com/go-sql-driver/mysql""time""xorm.io/xorm"
)func MysqlDbContent() {//数据库基本信息var (userName  string = "root"password  string = "12345678"ipAddress string = "127.0.0.1"port      int    = 3306dbName    string = "dt"charset   string = "utf8mb4")//构建数据库连接信息dataSourceName := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s", userName, password, ipAddress, port, dbName, charset)engine, err := xorm.NewEngine("mysql", dataSourceName)if err != nil {fmt.Println("数据库连接失败:")}fmt.Println("数据库连接成功")type User struct {Id      int64Name    stringAvatar  string `xorm:"varchar(200)"`Age     intPasswd  string    `xorm:"varchar(200)"`Created time.Time `xorm:"created"`Updated time.Time `xorm:"updated"`}err = engine.Sync(new(User))if err != nil {fmt.Println("表结构同步失败")}fmt.Println("表结构同步成功")}

数据库增删改查

package mainimport ("fmt"_ "github.com/go-sql-driver/mysql""time""xorm.io/xorm"
)func MysqlDbContent() {//数据库基本信息var (userName  string = "root"password  string = "12345678"ipAddress string = "127.0.0.1"port      int    = 3306dbName    string = "dt"charset   string = "utf8mb4")//构建数据库连接信息dataSourceName := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s", userName, password, ipAddress, port, dbName, charset)engine, err := xorm.NewEngine("mysql", dataSourceName)if err != nil {fmt.Println("数据库连接失败:")}fmt.Println("数据库连接成功")type User struct {Id      int64Name    stringAvatar  string `xorm:"varchar(200)"`Age     intPasswd  string    `xorm:"varchar(200)"`Created time.Time `xorm:"created"`Updated time.Time `xorm:"updated"`}err = engine.Sync(new(User))if err != nil {fmt.Println("表结构同步失败")}fmt.Println("表结构同步成功")//插入数据 插入 对象,返回值:受影响行数user1 := User{Id: 1001, Name: "张三1", Avatar: "http://www.baidu.com", Age: 20, Passwd: "12345678", Created: time.Now(), Updated: time.Now()}user2 := User{Id: 1002, Name: "张三2", Avatar: "http://www.baidu.com", Age: 20, Passwd: "12345678", Created: time.Now(), Updated: time.Now()}user3 := User{Id: 1003, Name: "张三3", Avatar: "http://www.baidu.com", Age: 20, Passwd: "12345678", Created: time.Now(), Updated: time.Now()}insert, _ := engine.Insert(&user1, &user2, &user3)if insert > 1 {fmt.Println("数据插入成功")}var users []Userusers = append(users, User{Id: 1004, Name: "张1", Avatar: "http://www.baidu.com", Age: 20, Passwd: "12345678", Created: time.Now(), Updated: time.Now()})users = append(users, User{Id: 1005, Name: "张2", Avatar: "http://www.baidu.com", Age: 20, Passwd: "12345678", Created: time.Now(), Updated: time.Now()})users = append(users, User{Id: 1006, Name: "张3", Avatar: "http://www.baidu.com", Age: 20, Passwd: "12345678", Created: time.Now(), Updated: time.Now()})//批量插入数据  Inserti, err := engine.Insert(&users)if i > 1 {fmt.Println("批量数据插入成功")}//Update//查询id=1000的数据并修改name字段user := User{Name: "laozhang"}update, err := engine.ID(1000).Update(&user)fmt.Println(update)//Deleteuser1 = User{Name: "张1"}i2, _ := engine.ID(1004).Delete(&user1)fmt.Println(i2)engine.Exec("update user set age = ? where id = ?", 10, 1003)//查询results, _ := engine.Query("select * from user")fmt.Println(results)results2, _ := engine.QueryString("select * from user")fmt.Println(results2)results3, _ := engine.QueryInterface("select * from user")fmt.Println(results3)//Get  select * from user limit 1user11 := User{}engine.Get(&user11)fmt.Println(user11)//指定条件查询用户user12 := User{Name: "张1"}engine.Where("name = ?", user1.Name).Desc("id").Get(&user12)fmt.Println(user12)//获取指定字段的值var name stringengine.Table(&user).Where("id = ?", 1002).Cols("name").Get(&name)fmt.Println(name)//Find 查询多条记录var users112 []Userengine.Where("password=12345678").And("age=20").Limit(10, 0).Find(&users112)fmt.Println(users112)//Count 统计记录数user113 := User{Passwd: "12345678"}count, _ := engine.Count(&user113)fmt.Println(count)//Iterate 和 Rows 根据条件遍历数据库,可以有两种方式: Iterate and Rowsengine.Iterate(&User{Passwd: "12345678"}, func(idx int, bean interface{}) error {user := bean.(*User)fmt.Println(user)return nil})rows, _ := engine.Rows(&User{Passwd: "12345678"})defer rows.Close()userBean := new(User)for rows.Next() {rows.Scan(userBean)fmt.Println(userBean)}
}

http://www.lryc.cn/news/512376.html

相关文章:

  • Excel 面试 04 查找函数 XLOOKUP
  • Flannel和Calico之对比(Comparison between Flannel and Calico)
  • Spring Boot + Redisson 封装分布式锁
  • QWEN2 模型架构配置;GGUF的概念:实现量化存储
  • window如何将powershell以管理员身份添加到右键菜单?(按住Shift键显示)
  • spring中使用@Validated,什么是JSR 303数据校验,spring boot中怎么使用数据校验
  • 实际部署Dify可能遇到的问题:忘记密码、开启HTTPS、知识库文档上传的大小限制和数量限制
  • mugen
  • CannotRetrieveUpdates alert in disconnected OCP 4 cluster解决
  • 计算机网络 (16)数字链路层的几个共同问题
  • 细说STM32F407单片机通过IIC读写EEPROM 24C02
  • 【AimRT】现代机器人通信中间件 AimRT
  • Unity 读Excel,读取xlsx文件解决方案
  • R基于贝叶斯加法回归树BART、MCMC的DLNM分布滞后非线性模型分析母婴PM2.5暴露与出生体重数据及GAM模型对比、关键窗口识别
  • 【信息系统项目管理师】高分论文:论信息系统项目的沟通管理(信息管理服务一体化平台)
  • 物联网工厂可视化监控平台:为智能制造打造的可视化大屏
  • 3、redis的高可用
  • 数据结构--顺序表(详解)
  • Day62 图论part11
  • git clone 超时
  • WPF编程excel表格操作
  • Day10补代码随想录 理论基础|232.用栈实现队列|225.用队列实现栈|20.有效的括号|1047.删除字符串中的所有相邻重复项
  • 【Devops】什么是Devops?(Development+Operations)和运维的区别?
  • 基于NodeMCU的物联网电灯控制系统设计
  • Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02
  • Linux应用软件编程-多任务处理(线程)
  • VITUREMEIG | AR眼镜 算力增程
  • Jenkins管理多版本python环境
  • Flutter富文本实现学习
  • 如何解决 OpenAI API 连接问题:降级 urllib3 版本