Golang实现mysql读库映射成Map【Easy】
这个类库灵感来源于.net的dbHelper类,因为其简单易用,现在go的driver必须使用对象映射,这让人火大不爽,不能实现灵活的Map,在Key经常变动的业务场景里面非常不爽,我还是喜欢直接写sql来的爽,无处不在,搞神马映射感觉约束!所以写了这个类库!
对于这个driver映射一个map还是可以轻松到到了,关键时map里面的数据全是byte,这几乎很难解码,所以封装类库,实现整体的解决方法,大家用的不好的地方,欢迎留言,完善!多谢!多谢!
获取类库的方法:
1、git clone git@github.com:bobby96333/GoSqlHelper.git
2、go get github.com/bobby96333/GoShellHelper
github:https://github.com/bobby96333/GoSqlHelper
代码 Demo
package main import (
"fmt"
"github.com/bobby96333/goSqlHelper"
) func main(){
fmt.Println("hello")
conn,err :=goSqlHelper.MysqlOpen("user:password@tcp(127.0.0.1:3306)/dbname")
checkErr(err)
row,err := conn.QueryRow("select * from table where col1 = ? and col2 = ?","123","abc")
checkErr(err)
if *row==nil {
fmt.Println("no found row")
}else{
fmt.Printf("%+v",row)
}
} func checkErr(err error){
if err!=nil {
panic(err)
}
}
output:
&map[col1:abc col2:123]
HelperRow的使用方法
fmt.println(row.ToJson())
fmt.Println("get string:",row.String("col2")) //query a integer
fmt.Println("get Int:",row.PInt("col1"))
//or
if col1,err:=row.Int("col1");err!=nil {
fmt.Println("query col 1 :",col1)
} //query a long
fmt.Println("get Int:",row.PInt64("col1"))
//or
if col1,err:=row.Int64("col1");err!=nil {
fmt.Println("query col 1 :",col1)
}
多行数据读取
rows,err := conn.QueryRows("select * from table where col1 = ? and col2 = ?","123","abc")
errCheck(err)
for _,row :=range *rows {
fmt.Println("row:",row.ToJson())
}
数据流方式读取
querying,err := conn.Querying("select * from table where col1 = ? and col2 = ?","123","abc")
errCheck(err)
for row,err:=querying.QueryRow();row!=nil&&err==nil;row,err=querying.QueryRow() {
fmt.Println("row:",row.ToJson())
}
执行sql
ret,err := conn.Exec("updatetable set col2 = ? where col1 = ? ","abc","123")
errCheck(err)
rowNum,err:= ret.RowsAffected()
errCheck(err)
fmt.Println("updated row:",rowNum)
另外使用goSqlHelper导出csv的工具也非常好用
https://github.com/bobby96333/csvdump
Golang实现mysql读库映射成Map【Easy】的更多相关文章
- golang 开发 Struct 转换成 map 两种方式比较
原文链接:https://www.jianshu.com/p/81c4304f6d1b 最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接 ...
- Golang操作MySQL的正确姿势
封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...
- 源映射(Source Map)详解
一.什么是源映射 为了提高性能,很多站点都会先压缩 JavaScript 代码然后上线, 但如果代码运行时出现错误,浏览器只会显示在已压缩的代码中的位置,很难确定真正的源码错误位置. 这时源映射就登场 ...
- [转帖]golang操作mysql使用总结
golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...
- 列表生成式+过滤器(filter)+映射(map)+lambda总结
这些都是python的特色,不仅强大,而且好用,配合起来使用更是无敌. 零.lambda lambda用于产生一个匿名表达式,组成部分为:lambda + ‘函数表达式’ ‘函数表达式’由一个冒号加上 ...
- 怎么让Intellj Idea 把数据库的表映射成hibernate的domain对象
步骤如下: 第一步:连接数据源: 点击:idea右边的database.如下图所示: 或者你依次点击:view-->Tool windows--->database 然后你将看在如下点击下 ...
- Mybaits 源码解析 (八)----- 全网最详细,没有之一:结果集 ResultSet 自动映射成实体类对象(上篇)
上一篇文章我们已经将SQL发送到了数据库,并返回了ResultSet,接下来就是将结果集 ResultSet 自动映射成实体类对象.这样使用者就无需再手动操作结果集,并将数据填充到实体类对象中.这可大 ...
- 【C/C++】例题5-4 反片语/算法竞赛入门经典/C++与STL入门/映射:map
本题是映射:map的例题. map:键值对. [题目] 输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词. 在判断是否满足条件时,字母不分大小写,但在输出 ...
- Ceph 块存储 创建的image 映射成块设备
将创建的volume1映射成块设备 [root@mysql-server ceph]# rbd map rbd_pool/volume1 rbd: sysfs write failed RBD ima ...
随机推荐
- 【刷题】BZOJ 2588 Spoj 10628. Count on a tree
Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始 ...
- BZOJ5058 期望逆序对 【矩乘 + 组合数学 + 树状数组】
题目链接 BZOJ5058 题解 可以发现任意两个位置\(A,B\)最终位置关系的概率是相等的 如果数列是这样: CCCCACCCCBCCCC 那么最终有\(7\)种位置关系 \((A,B)\) \( ...
- 在mvc中 怎么给@Html.HiddenFor()赋值
@Html.HiddenFor(model => model.CreatedBy, new { @value=currentInfo.UserID}) value始终是null@Html.Tex ...
- openwrt<转载--openwrt框架分析 >
这次讲讲openwrt的结构. 1. 代码上来看有几个重要目录package, target, build_root, bin, dl.... ---build_dir/host目录是建立工具链时的临 ...
- chrome神插件之:SwitchyOmega的安装设置
转至:http://yiweifen.com/v-1-118586.html 前言 往常找某草的网站基本上是这样的:先FQ,然后谷歌找1024,出现很多某草的更新地址,大多都是广告,大约需要花十几分钟 ...
- 清空git默认的用户名和密码,
https://www.jianshu.com/p/a1908f55bef8 在家目录下找到.gitconfig git config --local --unset credential.helpe ...
- python eval 用法
eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globals[, locals]]) -> value 参数: source:一个Py ...
- K8S之Secret
目录 简介 创建secret 1.加密用户名密码 2.加密证书文件 使用secret 1.使用volume挂载方式 2.将secret用于env 简介 secret顾名思义,用于存储一些敏感的需要加密 ...
- Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)
Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...
- 科学计算三维可视化---TraitsUI(Group对象组织界面)
使用Group对象组织界面 将一组相关的Item对象组织在一起 from traitsui.api import Group from traits.api import HasTraits,Int, ...