1 Star 0 Fork 1

GO精选开源项目/gorose

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
session_test.go 3.42 KB
一键复制 编辑 原始数据 按行查看 历史
fizzday 提交于 2019-11-11 09:45 . golint
package gorose
import (
"errors"
"testing"
)
func initSession() ISession {
return initDB().NewSession()
}
func TestSession_Query(t *testing.T) {
var s = initSession()
//var user []Users
res, err := s.Query("select * from users where name=?", "gorose2")
if err != nil {
t.Error(err.Error())
}
//t.Log(res)
t.Log(res, s.LastSql())
}
func TestSession_Query3(t *testing.T) {
var s = initSession()
var o []Users
//var o []map[string]interface{}
//var o []gorose.Data
res, err := s.Bind(&o).Query("select * from users limit 2")
if err != nil {
t.Error(err.Error())
}
t.Log(res)
t.Log(o, s.LastSql())
}
func TestSession_Execute(t *testing.T) {
var sql = `CREATE TABLE IF NOT EXISTS "orders" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"goodsname" TEXT NOT NULL default "",
"price" decimal default "0.00"
)`
var s = initSession()
var err error
var aff int64
aff, err = s.Execute(sql)
if err != nil {
t.Error(err.Error())
}
if aff == 0 {
return
}
aff, err = s.Execute("insert into orders(goodsname,price) VALUES(?,?),(?,?)",
"goods1", 1.23, "goods2", 3.23)
if err != nil {
t.Error(err.Error())
}
t.Log(aff)
}
func TestSession_Query_struct(t *testing.T) {
var s = initSession()
var err error
// defer s.Close()
var user []Users
_, err = s.Bind(&user).Query("select * from users limit ?", 2)
if err != nil {
t.Error(err.Error())
}
t.Log("多条struct绑定:", user)
var user2 Users
_, err = s.Bind(&user2).Query("select * from users limit ?", 2)
if err != nil {
t.Error(err.Error())
}
t.Log("一条struct绑定:", user2)
}
//type UserMap map[string]interface{}
func TestSession_Query_map(t *testing.T) {
var s = initSession()
var err error
var user2 = aaa{}
_, err = s.Bind(&user2).Query("select * from users limit ?", 2)
if err != nil {
t.Error(err.Error())
}
t.Log("一条map绑定:", user2)
t.Log("一条map绑定的uid为:", user2["uid"])
t.Log(s.LastSql())
var user = bbb{}
_, err = s.Bind(&user).Query("select * from users limit ?", 2)
if err != nil {
t.Error(err.Error())
}
t.Log("多条map绑定:", user)
t.Log("多条map绑定:", user[0]["age"].Int())
t.Log(s.LastSql())
}
func TestSession_Bind(t *testing.T) {
var s = initSession()
var err error
var user2 = aaa{}
_, err = s.Bind(&user2).Query("select * from users limit ?", 2)
if err != nil {
t.Error(err.Error())
}
t.Log("session bind success")
}
func TestSession_Transaction(t *testing.T) {
var s = initSession()
// 一键事务, 自动回滚和提交, 我们只需要关注业务即可
err := s.Transaction(trans1, trans2)
if err != nil {
t.Error(err.Error())
}
t.Log("session transaction success")
}
func trans1(s ISession) error {
var err error
var aff int64
aff, err = s.Execute("update users set name=?,age=? where uid=?",
"gorose3", 21, 3)
if err != nil {
return err
}
if aff == 0 {
return errors.New("fail")
}
aff, err = s.Execute("update users set name=?,age=? where uid=?",
"gorose2", 20, 2)
if err != nil {
return err
}
if aff == 0 {
return errors.New("fail")
}
return nil
}
func trans2(s ISession) error {
var err error
var aff int64
aff, err = s.Execute("update users set name=?,age=? where uid=?",
"gorose3", 21, 3)
if err != nil {
return err
}
if aff == 0 {
return errors.New("fail")
}
aff, err = s.Execute("update users set name=?,age=? where uid=?",
"gorose2", 20, 2)
if err != nil {
return err
}
if aff == 0 {
return errors.New("fail")
}
return nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/gochina/gorose.git
git@gitee.com:gochina/gorose.git
gochina
gorose
gorose
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385