免费软件下载官方网站,茶网站建设宗旨,网页设计作业心得,北京大型商场目录 1.数据库相关操作(1)非orm框架①引入②初始化③增删改查 (2) io版orm框架 (推荐用这个)①引入②初始化③增删改查④gorm gen的使用 (3) jinzhu版orm框架①引入②初始化③增删改查 2.redis(1)引入(2)初始化①普通初始化②v8初始化③get/set示例 1.数据库相关操作
(1)非orm… 目录 1.数据库相关操作(1)非orm框架①引入②初始化③增删改查 (2) io版orm框架 (推荐用这个)①引入②初始化③增删改查④gorm gen的使用 (3) jinzhu版orm框架①引入②初始化③增删改查 2.redis(1)引入(2)初始化①普通初始化②v8初始化③get/set示例 1.数据库相关操作
(1)非orm框架
①引入
go get github.com/go-sql-driver/mysql②初始化
import (database/sqlfmtgithub.com/Project02/utils_ github.com/go-sql-driver/mysql
)func InitDB() (err error) {// DSN:Data Source Namedsn : root:991113tcp(127.0.0.1:3306)/chuangyitest?charsetutf8mb4parseTimeTrue// 不会校验账号密码是否正确// 注意这里不要使用:我们是给全局变量赋值然后在main函数中使用全局变量dbMyDB, err sql.Open(mysql, dsn)if err ! nil {fmt.Println(fmt.Sprintf(database open err, err%s, utils.GetLogStr(err)))return}// 尝试与数据库建立连接校验dsn是否正确err MyDB.Ping()if err ! nil {fmt.Println(fmt.Sprintf(database ping err, err%s, utils.GetLogStr(err)))return}fmt.Println(建立链接成功...)return
}③增删改查
// 查询数据示例
func queryRowDemo() {sqlStr : select * from user_tag where id ?rows, err : caller.MyDB.Query(sqlStr, 250)if err ! nil {fmt.Printf(query failed, err:%v\n, err)return}defer rows.Close()for rows.Next() {var ut UserTagerr : rows.Scan(ut.Id, ut.Name, ut.EntityId, ut.TimeCreated)if err ! nil {fmt.Printf(scan failed, err:%v\n, err)return}fmt.Printf(res%s\n, utils.GetLogStr(ut))}
}// 插入数据
func insertRowDemo() {sqlStr : insert into user_tag(name, entity_id, time_created) values (?,?,?)nowTime : time.Now().Format(2006-01-02 15:04:05)ret, err : caller.MyDB.Exec(sqlStr, 王五, 2, nowTime)if err ! nil {fmt.Printf(insert failed, err:%v\n, err)return}theID, err : ret.LastInsertId() // 新插入数据的idif err ! nil {fmt.Printf(get lastinsert ID failed, err:%v\n, err)return}fmt.Printf(insert success, the id is %d.\n, theID)
}// 更新数据
func updateRowDemo() {sqlStr : update user_tag set time_created? where id ?nowTime : time.Now().Format(2006-01-02 15:04:05)ret, err : caller.MyDB.Exec(sqlStr, nowTime, 259)if err ! nil {fmt.Printf(update failed, err:%v\n, err)return}n, err : ret.RowsAffected() // 操作影响的行数if err ! nil {fmt.Printf(get RowsAffected failed, err:%v\n, err)return}fmt.Printf(update success, affected rows:%d\n, n)
}// 删除数据
func deleteRowDemo() {sqlStr : delete from user_tag where id ?ret, err : caller.MyDB.Exec(sqlStr, 3)if err ! nil {fmt.Printf(delete failed, err:%v\n, err)return}n, err : ret.RowsAffected() // 操作影响的行数if err ! nil {fmt.Printf(get RowsAffected failed, err:%v\n, err)return}fmt.Printf(delete success, affected rows:%d\n, n)
}(2) io版orm框架 (推荐用这个)
官网 http://gorm.io/
①引入
go get gorm.io/driver/mysql
go get gorm.io/gorm②初始化
import (fmtgorm.io/driver/mysqlgorm.io/gorm
)var (MyDB *gorm.DB
)func Init() {// 初始化数据库InitDB()
}func InitDB() {MyDB InitDBDetail(root, 123456, lyhtest, 127.0.0.1, 3306)fmt.Println(success...)return
}func InitDBDetail(username, password, dbname, ip string, port int64) *gorm.DB {dsn : fmt.Sprintf(%s:%stcp(%s:%d)/%s?charsetutf8parseTimeTruelocLocal, username, password, ip, port, dbname)db, err : gorm.Open(mysql.Open(dsn), gorm.Config{})if err ! nil {panic(err)}return db
}
③增删改查
说明Debug()可以查看执行的sql语句。
// 增
func createDemo() {userTag : UserTag{Name: java,EntityId: 2,}caller.MyDB.Debug().Table(user_tag).Create(userTag)// 新增的主键fmt.Println(utils.GetLogStr(userTag.Id))
}// 改
func updateDemo() {userTag : UserTag{Name: 玩耍2,}aa : caller.MyDB.Debug().Table(user_tag).Where(id?, 259).Updates(userTag) // 注意是Updatesfmt.Println(utils.GetLogStr(aa))
}// 查
func queryDemo() {userTagList : make([]UserTag, 0)caller.MyDB.Debug().Table(user_tag).Where(id ?, 259).Find(userTagList)fmt.Println(utils.GetLogStr(userTagList))
}④gorm gen的使用
a.先安装(会安装到gopath的bin目录下windows电脑需要将该路径加入到系统路径)
go install gorm.io/gen/tools/gentoollatestgentool -hUsage of gentool:-c stringconfig file path 配置文件路径-db stringinput mysql or postgres or sqlite or sqlserver. consult[https://gorm.io/docs/connecting_to_the_database.html] (default mysql)-dsn stringconsult[https://gorm.io/docs/connecting_to_the_database.html]-fieldNullablegenerate with pointer when field is nullable-fieldWithIndexTaggenerate field with gorm index tag-fieldWithTypeTaggenerate field with gorm column type tag-modelPkgName stringgenerated model codes package name {生成结构体的路径}-outFile stringquery code file name, default: gen.go-outPath stringspecify a directory for output (default ./dao/query) {生成query的路径}-tables stringenter the required data table or leave it blank-onlyModelonly generate models (without query file)-withUnitTestgenerate unit test for query code-fieldSignabledetect integer fields unsigned type, adjust generated data typeeg :
--tablesorders # generate from orders--tablesorders,users # generate from orders and users--tables # generate from all tables 这样是全部的表名b.举例 说明1windows电脑go install之后把exe添加到系统路径然后最好使用cmd运行, 先进入到项目目录执行下面的命令(如果提示没有gcc命令需要先安装该命令) 说明2-modelPkgName属性是在-outPath路径的上一级目录的基础上的
gentool -dsn root:991113tcp(127.0.0.1:3306)/chuangyitest?charsetutf8parseTimeTruelocLocal -tables -outPath ./dal/query -modelPkgName ./models生成的项目结构为
projectdalmodelsquery(3) jinzhu版orm框架
官网 https://pkg.go.dev/github.com/jinzhu/gorm#Open
①引入
go get github.com/go-sql-driver/mysql
go get -u github.com/jinzhu/gorm②初始化
package callerimport (fmt_ github.com/go-sql-driver/mysqlgithub.com/jinzhu/gormliuyaohui.lyh/Project03/utils
)var (MyDB *gorm.DB
)func Init() {// 初始化数据库if err : InitDB(); err ! nil {fmt.Println(fmt.Sprintf(database err, err%s, utils.GetLogStr(err)))}
}func InitDB() (err error) {MyDB, err gorm.Open(mysql, root:991113tcp(127.0.0.1:3306)/chuangyitest?charsetutf8parseTimeTruelocLocal)if err ! nil {fmt.Println(fmt.Sprintf(database open err, err%s, utils.GetLogStr(err)))return}fmt.Println(database success...)return
}③增删改查
// 增
func MyInsert() {caller.MyDB.Table(user_tag).Create(UserTag{Name: ik01001, EntityId: 2})
}// 查
func myQuery() {var userTag UserTagcaller.MyDB.Table(user_tag).First(userTag, id ?, 259) // 查询code为259的userTagfmt.Printf(%s\n, utils.GetLogStr(userTag))userTagList : make([]UserTag, 0)caller.MyDB.Table(user_tag).Find(userTagList, id ?, 257)fmt.Printf(%s\n, utils.GetLogStr(userTagList))
}// 事务
func myTx() error {// 注意一旦你在一个事务中使用tx作为数据库句柄tx : caller.MyDB.Table(user_tag).Begin()// 注意where一定要在更新操作前面,不然会数据全部更新// 方式1if err : tx.Where(map[string]interface{}{id: 259}).Update(UserTag{Name: 玩耍2}).Error; err ! nil {tx.Rollback()return err}// 方式2if err : tx.Where(id?, 259).Update(UserTag{Name: 玩耍333}).Error; err ! nil {tx.Rollback()return err}tx.Commit()return nil
}2.redis
网址https://liwenzhou.com/posts/Go/go_redis/
(1)引入
go get -u github.com/go-redis/redis(2)初始化
①普通初始化
// 声明一个全局的rdb变量
var rdb *redis.Client// 初始化连接
func initClient() (err error) {rdb redis.NewClient(redis.Options{Addr: localhost:6379,Password: , // no password setDB: 0, // use default DB})_, err rdb.Ping().Result()if err ! nil {return err}return nil
}②v8初始化
import (contextfmttimegithub.com/go-redis/redis/v8 // 注意导入的是新版本
)var (rdb *redis.Client
)// 初始化连接
func initClient() (err error) {rdb redis.NewClient(redis.Options{Addr: localhost:16379,Password: , // no password setDB: 0, // use default DBPoolSize: 100, // 连接池大小})ctx, cancel : context.WithTimeout(context.Background(), 5*time.Second)defer cancel()_, err rdb.Ping(ctx).Result()return err
}③get/set示例
func redisExample() {err : rdb.Set(score, 100, 0).Err()if err ! nil {fmt.Printf(set score failed, err:%v\n, err)return}val, err : rdb.Get(score).Result()if err ! nil {fmt.Printf(get score failed, err:%v\n, err)return}fmt.Println(score, val)val2, err : rdb.Get(name).Result()if err redis.Nil {fmt.Println(name does not exist)} else if err ! nil {fmt.Printf(get name failed, err:%v\n, err)return} else {fmt.Println(name, val2)}
}
文章转载自: http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn http://www.morning.pxjp.cn.gov.cn.pxjp.cn http://www.morning.jfbpf.cn.gov.cn.jfbpf.cn http://www.morning.nqyfm.cn.gov.cn.nqyfm.cn http://www.morning.dtzxf.cn.gov.cn.dtzxf.cn http://www.morning.kzhgy.cn.gov.cn.kzhgy.cn http://www.morning.jzlfq.cn.gov.cn.jzlfq.cn http://www.morning.yrnyz.cn.gov.cn.yrnyz.cn http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn http://www.morning.fhhry.cn.gov.cn.fhhry.cn http://www.morning.jwbnm.cn.gov.cn.jwbnm.cn http://www.morning.rqzyz.cn.gov.cn.rqzyz.cn http://www.morning.fbfnk.cn.gov.cn.fbfnk.cn http://www.morning.rfycj.cn.gov.cn.rfycj.cn http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn http://www.morning.rhqr.cn.gov.cn.rhqr.cn http://www.morning.lfdrq.cn.gov.cn.lfdrq.cn http://www.morning.jjwzk.cn.gov.cn.jjwzk.cn http://www.morning.ai-wang.cn.gov.cn.ai-wang.cn http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn http://www.morning.qxxj.cn.gov.cn.qxxj.cn http://www.morning.tkjh.cn.gov.cn.tkjh.cn http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn http://www.morning.nhdw.cn.gov.cn.nhdw.cn http://www.morning.uycvv.cn.gov.cn.uycvv.cn http://www.morning.mpbgy.cn.gov.cn.mpbgy.cn http://www.morning.wwkdh.cn.gov.cn.wwkdh.cn http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.xuejitest.com.gov.cn.xuejitest.com http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn http://www.morning.fmkbk.cn.gov.cn.fmkbk.cn http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn http://www.morning.rpdmj.cn.gov.cn.rpdmj.cn http://www.morning.lnyds.cn.gov.cn.lnyds.cn http://www.morning.blbys.cn.gov.cn.blbys.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.mhmcr.cn.gov.cn.mhmcr.cn http://www.morning.yhsrp.cn.gov.cn.yhsrp.cn http://www.morning.kqbwr.cn.gov.cn.kqbwr.cn http://www.morning.drywd.cn.gov.cn.drywd.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.gqtw.cn.gov.cn.gqtw.cn http://www.morning.fqmcc.cn.gov.cn.fqmcc.cn http://www.morning.jqswf.cn.gov.cn.jqswf.cn http://www.morning.hkng.cn.gov.cn.hkng.cn http://www.morning.ljbpk.cn.gov.cn.ljbpk.cn http://www.morning.rahllp.com.gov.cn.rahllp.com http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.hchrb.cn.gov.cn.hchrb.cn http://www.morning.ndltr.cn.gov.cn.ndltr.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.mhnrx.cn.gov.cn.mhnrx.cn http://www.morning.nsfxt.cn.gov.cn.nsfxt.cn http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn http://www.morning.lynmt.cn.gov.cn.lynmt.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.htpjl.cn.gov.cn.htpjl.cn http://www.morning.blfll.cn.gov.cn.blfll.cn http://www.morning.dxqwm.cn.gov.cn.dxqwm.cn http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn http://www.morning.elmtw.cn.gov.cn.elmtw.cn http://www.morning.mzkn.cn.gov.cn.mzkn.cn http://www.morning.kxmyj.cn.gov.cn.kxmyj.cn http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn http://www.morning.fbjnr.cn.gov.cn.fbjnr.cn http://www.morning.wxrbl.cn.gov.cn.wxrbl.cn http://www.morning.rkyw.cn.gov.cn.rkyw.cn http://www.morning.jcfdk.cn.gov.cn.jcfdk.cn http://www.morning.aiai201.cn.gov.cn.aiai201.cn http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn http://www.morning.wqkfm.cn.gov.cn.wqkfm.cn http://www.morning.ngdkn.cn.gov.cn.ngdkn.cn http://www.morning.rdwm.cn.gov.cn.rdwm.cn http://www.morning.dighk.com.gov.cn.dighk.com http://www.morning.sjqpm.cn.gov.cn.sjqpm.cn http://www.morning.phxdc.cn.gov.cn.phxdc.cn