Zorm 1.4.1がリリースされ、カスタムフィールドマッピングロジック

Zormは、Dameng(dm)、Kingbase、 mysql、postgresql、oracle、mssql、およびsqliteデータベースをサポートするgolang用の軽量ORMです

ソースアドレス:https//gitee.com/chunanyong/zorm

行く GET gitee.com/chunanyong/zorm
  • ネイティブSQLステートメントに基づいており、springrainの合理化と最適化です
  • 内蔵コードジェネレータ
  • コードは合理化されており、合計約2000行、詳細なコメントがあり、カスタマイズや変更に便利です。
  • zormの誕生の主な理由であるトランザクションの伝播をサポートする
  • mysql、postgresql、oracle、mssql、sqlite、dm(Da Meng)、kingbase(Ren Da Jincang)をサポートします
  • データベースの読み取りと書き込みの分離をサポート
  • zorm、gorm、およびxormの更新パフォーマンスは同等です。zormの読み取りパフォーマンスは、gormおよびxormの2倍の速度です。
  • テストケースはドキュメントです:https:  //gitee.com/chunanyong/readygo/blob/master/test/testzorm/BaseDao_test.go

本番使用リファレンス UserStructService.go

更新:カスタム拡張フィールドマッピングロジックをサポートします。コードは次のとおりです。


//实现CustomDriverValueConver接口,扩展自定义类型,例如 达梦数据库text类型,映射出来的是dm.DmClob类型,无法使用string类型直接接收
type CustomDMText struct{}
//GetDriverValue 根据数据库列类型和实体类属性类型,返回driver.Value的实例
//如果无法获取到structFieldType,例如Map查询,会传入nil
//如果返回值为nil,接口扩展逻辑无效,使用原生的方式接收数据库字段值
func (dmtext CustomDMText) GetDriverValue(columnType *sql.ColumnType, structFieldType reflect.Type) (driver.Value, error) {
	return &dm.DmClob{}, nil
}
//ConverDriverValue 数据库列类型,实体类属性类型,GetDriverValue返回的driver.Value的临时接收值
//如果无法获取到structFieldType,例如Map查询,会传入nil
//返回符合接收类型值的指针,指针,指针!!!!
func (dmtext CustomDMText) ConverDriverValue(columnType *sql.ColumnType, structFieldType reflect.Type, tempDriverValue driver.Value) (interface{}, error) {
	dmClob, _ := tempDriverValue.(*dm.DmClob)
	dmlen, _ := dmClob.GetLength()
	strInt64 := strconv.FormatInt(dmlen, 10)
	dmlenInt, _ := strconv.Atoi(strInt64)
	str, _ := dmClob.ReadString(1, dmlenInt)
	return &str, nil
}
//CustomDriverValueMap 用于配置driver.Value和对应的处理关系,key是 drier.Value 的字符串,例如 *dm.DmClob
//一般是放到init方法里进行添加
zorm.CustomDriverValueMap["*dm.DmClob"] = CustomDMText{}

 

おすすめ

転載: www.oschina.net/news/127816/zorm-1-4-1-released