benchmarksql 金仓_GitHub - springrain/zorm: go(golang)轻量级ORM,支持达梦(dm),人大金仓(kingbase)数据库...

本文档是关于zorm,一个Go语言的轻量级ORM库的使用教程,它支持包括达梦(DM)和人大金仓(Kingbase)在内的多种数据库。zorm提供了方便的事务处理、SQL打印和自动占位符替换等功能,通过示例展示了如何进行数据的插入、批量保存、查询、更新和删除操作。" 129602593,17299047,Python编程:集合操作与日期计算实践,"['Python', '编程练习', '数据处理', '算法']
摘要由CSDN通过智能技术生成

// testzorm 使用原生的sql语句,没有对sql语法做限制.语句使用Finder作为载体

// 占位符统一使用?,zorm会根据数据库类型,自动替换占位符,例如postgresql数据库把?替换成$1,$2...

// zorm使用 ctx context.Context 参数实现事务传播,ctx从web层传递进来即可,例如gin的c.Request.Context()

// zorm的事务操作需要显示使用zorm.Transaction(ctx, func(ctx context.Context) (interface{}, error) {})开启

package testzorm

import (

"context"

"fmt"

"testing"

"time"

"gitee.com/chunanyong/zorm"

//00.引入数据库驱动

_ "github.com/go-sql-driver/mysql"

)

//dbDao 代表一个数据库,如果有多个数据库,就对应声明多个DBDao

var dbDao *zorm.DBDao

// ctx默认应该有 web层传入,例如gin的c.Request.Context().这里只是模拟

var ctx = context.Background()

//01.初始化DBDao

func init() {

//自定义zorm日志输出

//zorm.LogCalldepth = 4 //日志调用的层级

//zorm.FuncLogError = myFuncLogError //记录异常日志的函数

//zorm.FuncLogPanic = myFuncLogPanic //记录panic日志,默认使用ZormErrorLog实现

//zorm.FuncPrintSQL = myFuncPrintSQL //打印sql的函数

//dbDaoConfig 数据库的配置

dbDaoConfig := zorm.DataSourceConfig{

//DSN 数据库的连接字符串

DSN: "root:root@tcp(127.0.0.1:3306)/readygo?charset=utf8&parseTime=true",

//数据库驱动名称:mysql,postgres,oci8,sqlserver,sqlite3,dm,kingbase 和DBType对应,处理数据库有多个驱动

DriverName: "mysql",

//数据库类型(方言判断依据):mysql,postgresql,oracle,mssql,sqlite,dm,kingbase 和 DriverName 对应,处理数据库有多个驱动

DBType: "mysql",

//MaxOpenConns 数据库最大连接数 默认50

MaxOpenConns: 50,

//MaxIdleConns 数据库最大空闲连接数 默认50

MaxIdleConns: 50,

//ConnMaxLifetimeSecond 连接存活秒时间. 默认600(10分钟)后连接被销毁重建.避免数据库主动断开连接,造成死连接.MySQL默认wait_timeout 28800秒(8小时)

ConnMaxLifetimeSecond: 600,

//PrintSQL 打印SQL.会使用FuncPrintSQL记录SQL

PrintSQL: true,

}

// 根据dbDaoConfig创建dbDao, 一个数据库只执行一次,第一个执行的数据库为 defaultDao,后续zorm.xxx方法,默认使用的就是defaultDao

dbDao, _ = zorm.NewDBDao(&dbDaoConfig)

}

//TestInsert 02.测试保存Struct对象

func TestInsert(t *testing.T) {

//需要手动开启事务,匿名函数返回的error如果不是nil,事务就会回滚

_, err := zorm.Transaction(ctx, func(ctx context.Context) (interface{}, error) {

//创建一个demo对象

demo := newDemoStruct()

//保存对象,参数是对象指针.如果主键是自增,会赋值到对象的主键属性

_, err := zorm.Insert(ctx, &demo)

//如果返回的err不是nil,事务就会回滚

return nil, err

})

//标记测试失败

if err != nil {

t.Errorf("错误:%v", err)

}

}

//TestInsertSlic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值