gorose使用示例
package main
import (
"fmt"
"github.com/gohouse/gorose" //import Gorose
_ "github.com/go-sql-driver/mysql" //只执行github.com/go-sql-driver/mysql的init函数
"errors"
"strconv"
)
func main() {
//mysql数据库配置
var DbConfig = map[string]interface{}{
// Default database configuration
"Default": "mysql_dev",
// (Connection pool) Max open connections, default value 0 means unlimit.
"SetMaxOpenConns": 0,
// (Connection pool) Max idle connections, default value is 1.
"SetMaxIdleConns": 10,
// Define the database configuration character "mysql_dev".
"Connections": map[string]map[string]string{
"mysql_dev": {// 定义名为 mysql_dev 的数据库配置
"host": "192.168.2.179", // 数据库地址
"username": "a", // 数据库用户名
"password": "b@", // 数据库密码
"port": "3306", // 端口
"database": "a", // 链接的数据库名字
"charset": "utf8", // 字符集
"protocol": "tcp", // 链接协议
"prefix": "", // 表前缀
"driver": "mysql", // 数据库驱动(mysql,sqlite,postgres,oracle,mssql)
},
},
}
db, err := gorose.Open(DbConfig)
if err != nil {
panic(err.Error())
}
defer db.Close() //延迟关闭
// 简单查询
res, err := db.Query("select * from users;")
fmt.Println(res)
// 条件查询
res, err = db.Query("select * from users where userid=?",1)
fmt.Println(res)
//简单链式查询
fmt.Println(db.Table("users").First())
//带条件的链式查询
fmt.Println(db.Table("users").Fields("userid as id ,username as name").Where("userid", "=", 3).Get())
//带别名的查询
res, err := db.Table("users").Fields("userid as ID,username as Name").Get()
// 查询结果转成json
res,err = db.Table("users").Fields("userid as id ,username as name").Where("userid", "=", 3).Get()
jsonStr := db.JsonEncode(res)
fmt.Println(jsonStr)
//开启事务,参数是一个匿名函数
db.Transaction(func() error {
// 链式插入数据
res1 ,err1 := db.Table("version").Data(map[string]interface{}{"MainVersion":1,"SubVersion":2}).Insert(true)
if err1 != nil {
return err1
}
if res1 == 0 {
return errors.New("Insert failed")
}
//链式 更新数据
res1,err1 = db.Table("scene").Data(map[string]interface{}{"modelname":"model003"}).Where("id",10).Update()
if err1 != nil {
return err1
}
if res1 == 0 {
return errors.New("Update failed")
}
return nil
})
// 事务结束
}
gorose使用示例的更多相关文章
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1
微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们 ...
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- XAMARIN ANDROID 二维码扫描示例
现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile 做一个简单的 Android 条码扫描示 ...
- iOS之ProtocolBuffer搭建和示例demo
这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我 ...
- oracle常用函数及示例
学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...
随机推荐
- Python之文件和目录操作
1.文件基本操作 python内置了打开文件的函数open(),使用规则如下: File_object=open(filename[,access_mode][,buffering]) Filen ...
- ROS笔记2 构建一个package
构建package catkin_make 可以理解为一个集成了CMake和make的命令行工具 通常的cmake构建如下 # In a CMake project $ mkdir build $ c ...
- Linux设置Swap虚拟内存方法
linux可以文件或者分区来当作虚拟内存. 首先查看当前的内存和swap 空间大小(默认单位为k, -m 单位为M): free -m 查看swap信息,包括文件和分区的详细信息 swapon -s或 ...
- freemark使用总结
1.下拉框中使用三元表达式: <option value="1类" ${(bean.col5!?string="1类")?string('selected ...
- [翻译] Oracle Database 12c 新特性Multitenant
译自官方白皮书http://www.oracle.com/technetwork/database/plug-into-cloud-wp-12c-1896100.pdf,包含新的云计算相关技术的介绍. ...
- 逛csdn看见的一个知识阶梯,感觉不错
逛csdn看见的一个知识阶梯,感觉不错: 计算机组成原理 → DOS命令 → 汇编语言 → C语言(不包括C++).代码书写规范 → 数据结构.编译原理.操作系统 → 计算机网络.数据库原理.正则表 ...
- 记一次与iframe之间的抗争
iframe这个标签之前了解过这个东西,知道它可以引入外来的网页,但是实际开发中没有用到过.这一次有一个需求是说准备要在网页中嵌套另外一个网站,用iframe这个标签,让我测试一下这个可不可以在自己的 ...
- 预置第三方apk到MTK项目相关问题总结
目前5.0之后项目预置方式通用步骤为: 建立apk文件夹; 置目标apk到该文件夹下; 解压缩apk查看是否包含lib/文件夹(apk项目是否包含lib库文件); 在该文件夹下编写Androi ...
- 安装最新nodejs
# apt-get update # apt-get install -y python-software-properties software-properties-common # add-ap ...
- MySQL分数排名同分并列与不并列查询
Scores表 | Id | Score | | 3.50 | | 3.65 | | 4.00 | | 3.85 | | 4.00 | | 3.65 | 并列 | Score | Rank | | | ...