递归火山软件开发平台

标题: ORM类库,用新语法重新封装了一遍 [打印本页]

作者: 龙纹    时间: 3 天前
标题: ORM类库,用新语法重新封装了一遍
本帖最后由 龙纹 于 2025-4-25 21:00 编辑

这是我之前封装过的一个ORM类库的重新封装:火山ORMPP库, 简化数据库操作, 支持sqlite, mysql, pg
当时封装这个类库,又是宏又是骚操作的,折腾了很久,封装出来了还有很多限制。

前两天看到类库征集帖子里的回复,有人提到了ORM类库。几年过去了,原始类库也更新了很多,着更新一下。这次使用了@别名类型-本地类,封装过程格外的轻松。除了获取表名需要修改原始项目中某个函数,没碰到什么难题。

已经更新,现在支持SQLite3、MySQL、PostgreSQL三种数据库随意切换,重新下载模块替换即可。还有一些功能没有封装,比如支持切面、数据库连接池。
有什么建议可以回帖,看到会回复。

文件太大,蓝奏云:https://wwgy.lanzouo.com/ietmP2uh568j
作者: rinipp    时间: 3 天前
兹磁
作者: 冰山一角    时间: 3 天前
支持大佬,如果感觉成熟可以给吴总弄到pc里面去
作者: 高山!&流水    时间: 3 天前
本帖最后由 高山!&流水 于 2025-4-24 19:12 编辑

希望尽快封装完成,能否防止SQL、注、入,如果能希望给一个例子。
作者: numbersir    时间: 3 天前
看到大佬们都在我学火山就对了
作者: 龙纹    时间: 3 天前
高山!&流水 发表于 2025-4-24 19:10
希望尽快封装完成,能否防止SQL、注、入,如果能希望给一个例子。

现在放出来是先给各位看看,实际使用是不是有问题,有没有什么建议。
底层库已经做了防、注、入的工作,直接使用即可。
作者: niuyanbo2021    时间: 3 天前
支持sqlite, mysql, pg   这正是我需要的范围。太巧了
作者: 朕的    时间: 3 天前
支持大佬发电
作者: urenai    时间: 3 天前
龙老板 有没有空研究一下 service dll
搞不定,放弃了 Service DLL - 火山平台俱乐部 - 递归火山软件开发平台 - Powered by Discuz!

作者: Snail    时间: 3 天前

支持大佬发电
作者: nurjay    时间: 3 天前
希望继续完善,有几个疑虑
1、你或者也要定义数据模型吗?定义的方法跟火山go一样吗?
2、事务操作功能如何?
3、连接池管理数据库连接
作者: 龙纹    时间: 前天 05:12
nurjay 发表于 2025-4-24 23:40
希望继续完善,有几个疑虑
1、你或者也要定义数据模型吗?定义的方法跟火山go一样吗?
2、事务操作功能如何 ...

1、需要定义一个映射类,下面是定义代码:
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 类 个人信息 <公开 注释 = "类和成员变量名的输出名一定要改!!!" @输出名 = "person">
  3. {

  4.     # @begin
  5.     # // 注册自增主键,类名(主键字段名)
  6.     # REGISTER_AUTO_KEY(person, id)
  7.     # // 注册冲突主键,类名(冲突主键字段名)
  8.     # // REGISTER_CONFLICT_KEY(person, name)
  9.     # // REGISTER_CONFLICT_KEY(person, name, age) // 如果是多个
  10.     #
  11.     # // 生成映射类所需的一些信息,这里填入 类名(字段名1,字段名2,...)
  12.     # YLT_REFL(person, id, age, name)
  13.     # @end
  14.     #

  15.     变量 id <公开 类型 = 整数 @输出名 = "id">
  16.     变量 age <公开 类型 = 整数 @输出名 = "age">
  17.     变量 name <公开 类型 = 标准文本类 @输出名 = "name">

  18.     #
  19. }

  20. 类 个人信息数组类 <公开 基础类 = 标准数组模板类 @模板实现类 = "个人信息">
  21. {

  22.     #
  23. }
复制代码
此外还有其他操作,比如表名能设置别名,不强制要求跟类输出名一致,字段同样,可以参考Github项目内的示例。

2、已经封装了开始事务、提交事务、回滚。

3、Github项目是支持连接池的,只是暂未封装。

作者: 龙纹    时间: 前天 11:33
已经更新,现在支持SQLite3、MySQL、PostgreSQL三种数据库随意切换
作者: jcos    时间: 前天 11:59

超级牛X666
作者: Xelloss0618    时间: 前天 12:09
龙纹 发表于 2025-4-25 11:33
已经更新,现在支持SQLite3、MySQL、PostgreSQL三种数据库随意切换

模块安装包写错了,安装到安卓那边了……
作者: 龙纹    时间: 前天 12:27
Xelloss0618 发表于 2025-4-25 12:09
模块安装包写错了,安装到安卓那边了……

谢谢提醒,晚点重新更新。
顺便问一下,@别名类型-本地类,好像没办法支持嵌套?
实现类是sqlite3、mysql、pg,模板类dbng<sqlite|mysql|pg>是适配器,是不是只能把所有重复方法在每个类都写一遍。
作者: michardhl    时间: 前天 12:28
大佬,连接池可否加上?
作者: 龙纹    时间: 前天 12:29
michardhl 发表于 2025-4-25 12:28
大佬,连接池可否加上?

我得再找时间思考一下如何把连接池封装进来
作者: Xelloss0618    时间: 前天 12:43
龙纹 发表于 2025-4-25 12:27
谢谢提醒,晚点重新更新。
顺便问一下,@别名类型-本地类,好像没办法支持嵌套?
实现类是sqlite3、mysql ...

可以用模板基础类的,也可以用个基类写重复的方法,然后继承它,在实现类写上别名即可。
基类我建议你随便写个别名,比如"\\",避免出现对象类那些方法。
作者: yifan09    时间: 前天 14:03
支持
作者: lxhabc123l    时间: 前天 16:13
大佬,文件呢,正需要
作者: 龙纹    时间: 前天 21:00
lxhabc123l 发表于 2025-4-25 16:13
大佬,文件呢,正需要

更新好了
作者: 高山!&流水    时间: 昨天 23:42
龙纹 发表于 2025-4-24 20:05
现在放出来是先给各位看看,实际使用是不是有问题,有没有什么建议。
底层库已经做了防、注、入的工作, ...

谢谢大佬无私奉献,希望继续加油,把连接池封装进来,虽然我不常用,但是不排除有些项目会用到,再次感谢大佬!!!




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4