代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。