跳到主要内容
版本:2.10.x(Latest)

主要内容

GoFrame v2.10版本带来了大量重要特性和优化,其中最显著的是容器组件全面支持泛型,大幅提升类型安全性和开发体验。本次版本还新增了对GaussDB的数据库类型支持、引入了配置自动绑定与监听机制、RSA加密与SHA256哈希支持、数据库连接池优化、类型转换增强等功能。此外,开发工具在多个方面得到改进,包括更灵活的表名通配符匹配、更完善的单元测试覆盖等。这些新特性和改进将显著提升框架的易用性、性能和开发效率。

以下为本次版本的主要内容,详细的Change Log请参考: https://github.com/gogf/gf/releases/tag/v2.10.0

完整的代码变更请参考:https://github.com/gogf/gf/compare/v2.9.0...v2.10.0

Enjoy it! 🚀

特别致谢

本次版本共有44位贡献者参与了贡献,感谢所有参与开源项目贡献的开发者们,You make GoFrame possible!💖。

以下贡献者列表按照名称字母增序排序: @973212983@aitimate@chen-mou@chenrui333@dependabot@DustScribe@elonnzhang@fainc@fengshunli@gqcn@hailaz@hicolin@houseme@iamcc30@ivothgle@joy999@LanceAdd@li-zheng-hao@lingcoder@liov@ljluestc@lxy1151@lxzan@minimAluminiumalism@oldme-git@qiulaidongfeng@sanrentai@shubo83@smzgl@sxp20008@The-night-elves@tiger1103@UncleChair@wanghaolong613@wangle201210@windvalley@xiaoyi510@xiongchao123@yangyanqing@yuluo-yx@YunzhiYike@zhang5788@Zjmainstay@zishang520

感谢所有参与本次版本v2.10.0贡献的开发者们

兼容提示

  1. container容器组件全面支持泛型,除了新增泛型类型,原有容器类型底层已迁移至类型安全的泛型实现。

  2. util/gpage分页组件已标记为废弃,建议使用ORM的分页功能或自行实现分页逻辑。

组件改进

  1. container/garray

  2. container/gmap

    • 新增泛型HashMap[K, V]ListMap[K, V]TreeMap[K, V],提供类型安全的映射操作。
    • 新增NewXXXWithChecker系列函数,支持自定义nil值检查器,解决类型化Nil问题。#4520, #4484, #4610, #4605
    • 相关使用文档已更新,请参考:
  3. container/gset

  4. container/glist

  5. container/gqueue

  6. container/gring

  7. container/gpool

  8. container/gtree

  9. container

    • 重构容器组件,添加默认nil检查器,将实例容器迁移到类型安全泛型。#4630, #4617
  10. database/gdb

    • 新增MaxIdleConnTime配置项,支持设置连接池中空闲连接的最大生存时间,优化连接池管理。#4625
    • 新增lock update skip locked支持,提供更灵活的行锁定机制。#4607
    • 新增表字段元数据设置功能,生成dao时可自动生成表字段注册代码,便于字段管理和验证。#4460
    • 新增获取所有配置的功能,方便验证等业务操作。#4389
    • 优化SoftTime软删除时间功能,提升易用性。#4559
    • 优化字段分组时的性能,提升查询效率。#4440
    • 修复原始SQL Count忽略Where条件的问题。#4611
    • 修复DoCommit中的panic处理,防止数据库驱动panic时阻塞。#4423
    • 修复分页查询中使用固定缓存键导致的缓存错误覆盖问题。#4339
    • 修复使用WithAllreflect.Value对象执行ScaniTableName接口检测问题。#4606
    • 修复当表名/别名未知时FieldsPrefix中的字段过滤问题。#4602
    • 修复MySQL JOINGROUP BY/ORDER BY中的列名歧义问题。#4521
    • 修复使用数据库分片功能时数据库输出日志中的schema错误。#4319
    • 修复GetArray返回类型并添加Bools方法。#4452
    • 简化ordergroup by别名引用逻辑,提升代码可读性。#4555
    • FieldsPrefix添加引号,确保字段名的正确性。#4485
    • 支持with中的多个order字段。
    • 相关使用文档已更新,请参考:
  11. net/ghttp

    • 增强GetHeader方法,支持设置默认值,简化代码逻辑。#4210
    • 改进GetMetaTag方法,处理nil和类型检查,提升健壮性。
    • 修复上传文件时表单字段值截断问题。#4627
    • 修复规范路由自定义参数识别异常。#4549
    • 修复Server Domain为空字符串时绑定处理器模式会添加@的问题。#4100, #4101
    • 修复query参数的in-tag参数解析错误。#4227, #4228
    • 修复附件文件名支持utf8编码。#4459
    • 修复相关问题。#4567, #4569
    • 相关使用文档已更新,请参考:
  12. util/gconv

    • 新增Scan函数的OmitEmptyOmitNil选项,提供更灵活的类型转换控制。#4584
    • 修复从旧版本实现转换到nil指针目标时的不兼容问题,确保向后兼容。#4224
    • 修复MapToMap中嵌套map转换时的数据丢失问题。#4612
    • 修复不安全的stringbytes转换。#4600
    • 修复深层slice类型的扫描功能。
    • 相关使用文档已更新,请参考:
  13. os/gcfg

    • 新增Loader功能,支持自动结构体绑定和配置监视,类似Spring Boot@ConfigurationProperties注解,大幅简化配置管理。#4575
    • 新增带自定义回调的文件监视器支持,提供更灵活的配置变更处理。#4446
    • 恢复配置文件优先级高于环境变量和命令行参数的默认行为,保持与旧版本一致。#4647
    • 修复忽略fsnotify事件错误,避免gcfg包完全失败。#4400
    • 相关使用文档已更新,请参考:
  14. os/gfile

    • 新增MatchGlob函数,支持globstar模式匹配,提供更强大的文件路径匹配能力。#4570, #4574
    • 相关使用文档已更新,请参考:
  15. os/gtime

    • 修复gtime时间字符串处理逻辑,提升解析准确性。#4409
    • 添加对nil时间指针的处理,避免panic#4323
  16. os/gcache

    • 优化默认缓存延迟初始化,减少不必要的资源占用。#4468
  17. os/gcron

    • 修复gcron包的单元测试用例偶尔失败的问题,提升测试稳定性。#4419
  18. encoding/gjson

    • 增强加载未指定类型数据时的自动类型检查,提升JSON处理的智能性。#4637
    • 修复gjson数据竞争问题,确保并发安全。#4510
  19. net/gclient

    • 优化默认http.Transport连接池配置,提升网络请求性能。#4390
    • 修复上传文件时表单字段值截断问题。#4627
    • 修复content-type 'application/json;charset=utf-8'问题。#4369
  20. net/goai

    • 添加openapi uuid.UUID类型支持,完善类型系统。#4604
    • 修复swagger $ref替换问题。#4512
    • 修复g.Meta作为请求参数传递的问题。#4397
  21. util/gvalid

    • 新增更多验证规则:alphaalpha-dashalpha-numlowercasenumericuppercase,增强数据验证能力。#4601
    • 修复+.1通过numeric检查的问题,确保验证准确性。#4374
    • 相关使用文档已更新,请参考:
  22. util/gutil

    • 修复Dump中的误报循环检测,提升调试体验。#2902, #4626
    • 修复util/gval中废弃变量{format}的使用。#4258
  23. crypto/grsa

    • 新增RSA加密解密功能,提供完整的RSA加密支持,包括公钥加密、私钥解密等操作。#4571
    • 相关使用文档已更新,请参考:RSA算法-grsa
  24. crypto/gsha256

    • 新增gsha256组件,提供SHA256哈希计算功能。#4558
    • 相关使用文档已更新,请参考:SHA256算法-gsha256
  25. errors/gerror

    • 新增ITextArgs接口及其实现,主要用于需要单独获取textargs的国际化场景,提升国际化支持。#4597
    • 修复gerror.Error text字段包含引号时序列化失败的问题。#4449
    • 相关使用文档已更新,请参考:
  26. database/gredis

    • 支持获取原始Redis客户端,提供更底层的操作能力。#4306
  27. util/gpage

    • 标记为废弃,建议使用ORM的分页功能或自行实现。#4230
    • 相关使用文档已更新,请参考:分页管理-gpage

社区组件

  1. contrib/registry/nacos

    • 更新nacos sdk2.3.5版本,提升稳定性和性能。#4628
    • 新增SetDefaultEndpointSetDefaultMetadata方法,提供更灵活的配置方式。#4608
    • 升级nacos registry&config组件。#4473
  2. contrib/drivers/pgsql

    • 新增更多字段类型转换支持,增强PostgreSQL兼容性。#3737
    • 新增数组类型numeric[]decimal[]转换为Go []float64的支持,完善数组类型处理。#4457, #4511
    • 修复pgsqlschema模式下同表名字段重叠问题。#4375
    • 修复合并重复字段,特别是键约束。#4465
  3. contrib/drivers/gaussdb

    • 新增gaussdb驱动支持,扩展数据库支持范围。#4563
  4. contrib/drivers/dm

    • 新增Replace/InsertIgnore支持和dm数据库的字段类型/长度增强,完善达梦数据库支持。#4541
    • 新增WherePri支持,简化主键查询。#4157
    • 修复支持多行SQL语句。#4163, #4164
  5. contrib/drivers/mysql

    • 修复解决不同MySQL/MariaDB数据库中存在相同表名/列名时的字段重复问题。#4577
    • 修复MySQL驱动批量插入的单元测试问题。#4456
  6. contrib/drivers/mssql

    • 更新tables SQL查询以提高兼容性。#4170
    • 支持LastInsertId方法。#4051
  7. contrib/drivers/oracle

    • dm/pgsql/mssql/oracle添加Replace/LastInsertId功能支持,完善数据库功能。#4547
  8. contrib/clickhouse

    • 优化clickhouse驱动实现。#4499
    • 修复clickhouse无法支持int128/int256/uint128/uint256的问题。#4370
  9. contrib/config/apollo

    • 修复gcfg config apollo无法检索多个命名空间配置的问题,watch apollo change导致配置丢失的问题。#4509

开发工具

  1. gf run

    • 改进监视功能,优化运行命令仅在文件写入事件时重新加载,减少不必要的重启。#4573, #4476
    • 修复AddSigHandlerShutdown无法正常工作的问题。#4441
  2. gf init

    • 改进命令实现,通过版本重试和gofmt支持提升项目初始化体验。#4572, #4592
    • 修复格式化导致的导入错误。#4598
  3. gf gen ctrl

    • 改进并增强命令实现,提升控制器代码生成质量。#4325
    • 修复为controller添加extra选项以控制下载行为。#4435
  4. gf gen dao

    • 新增为tables配置添加通配符模式支持,提供更灵活的表名匹配能力。#4632
    • 新增为tableEx属性添加广泛匹配支持。#4453
    • 改进命令实现,支持removeFieldPrefix选项,更灵活地处理字段名前缀。#4243
    • 改进typeMap检查逻辑。#4410
    • 修复重叠的shardingPattern匹配问题,确保分片配置正确。#4631
    • 修复生成时可能导致重复的问题。#4268
    • 修复在多个shardingPattern表中生成分片dao的问题。#4379
    • 修复表ex修复bug的匹配。#4458
    • 修复命令执行变得非常慢的性能问题。#4498
    • 修复在windows平台上为clickhouse生成代码时出现unknown time zone错误。#4368
    • 相关使用文档已更新,请参考:
  5. gf gen service

    • 修复丢失版本化导入路径的问题。#4242, #4638
  6. gf gen enums

    • 修复使用相对路径时输出路径错误。#4636
  7. gf build

    • 修复gf build --dumpEnv命令错误。#4635
  8. gf env

    • 修复命令错误。#4635
  9. 测试完善

    • 增强gen service命令的集成测试。#4645
    • 增强gen pb命令的集成测试。#4644
    • 增强fix命令的单元测试。#4643
    • 新增pack命令的单元测试。#4642
    • 新增gen enums命令的单元测试。#4641
    • 新增gen init命令的单元测试。#4640

其他改进

  1. 架构支持

    • 新增龙芯架构(loong64)支持,扩展平台兼容性。#4467
  2. 代码质量

    • 重构interface{}改为anyreflect.Ptr改为reflect.Pointer,提升代码现代化程度。#4395
  3. 依赖管理

    • 更新多个依赖版本以增强兼容性和安全性。#4380, #4237
    • 升级tablewriterv1.0.9并重构表渲染逻辑。#4352
    • 升级nacosredis等第三方库到最新版本。#4241, #4215