递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 12522|回复: 43
打印 上一主题 下一主题

[视窗] ORM类库,用新语法重新封装了一遍

[复制链接]

8

主题

109

帖子

3230

积分

论坛元老

Rank: 8Rank: 8

积分
3230
跳转到指定楼层
楼主
发表于 2025-4-24 17:33:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 龙纹 于 2025-5-20 20:06 编辑

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

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

目前主要功能如下:
  支持SQLite3、MySQL、PostgreSQL三种数据库随意切换。
  类方法:连接、创建数据表、创建数据表_注册键信息、插入数据、插入数据_返回自增ID、更新数据、更新数据_指定字段、删除所有数据、删除数据_条件、cha询数据、cha询数据_条件、执行原生SQL、开始事务、提交事务、回滚。
  MySQL连接池、PostgreSQL连接池。

5月20日:
  增加PostgreSQL连接池,处理PostgreSQL的依赖DLL。
目前已知问题:使用PostgreSQL,如果密码为空,会导致创建表到postgres数据库中,修改密码不为空即可。

4月27日:
  增加MySQL数据库连接池与对应例程,注意获取连接后需要调用"自动管理连接"方法,这样连接使用完后会归还给连接池。
  增加 插入数据_返回自增ID 方法,用于获取插入数据后的自增ID。



模块安装包和例程:蓝奏云



火山PC交流群: 748413192
回复

使用道具 举报

8

主题

109

帖子

3230

积分

论坛元老

Rank: 8Rank: 8

积分
3230
44#
 楼主| 发表于 2025-7-15 13:36:23 | 只看该作者
cxz7411 发表于 2025-7-15 08:48
强烈建议添加mssql或者ADO

底层库只支持这么多, 目前没有扩展底层库的想法
火山PC交流群: 748413192
回复

使用道具 举报

38

主题

374

帖子

3256

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3256
43#
发表于 2025-7-15 08:48:33 | 只看该作者
强烈建议添加mssql或者ADO
回复

使用道具 举报

6

主题

115

帖子

2483

积分

金牌会员

Rank: 6Rank: 6

积分
2483
42#
发表于 2025-7-13 22:22:31 | 只看该作者
龙纹 发表于 2025-7-13 21:53
情况1的 REGISTER_AUTO_KEY(person, id) 只是做了一个声明, 让本类库知道这个字段是自增字段, 进而特殊处 ...

好的,谢谢
回复

使用道具 举报

8

主题

109

帖子

3230

积分

论坛元老

Rank: 8Rank: 8

积分
3230
41#
 楼主| 发表于 2025-7-13 21:53:04 | 只看该作者
michardhl 发表于 2025-7-13 21:11
使用的是sqlite数据库.但有以下情况不知是否为bug还是确实需要这么操作
1.代码中使用`创建数据表`,编写映 ...

情况1的 REGISTER_AUTO_KEY(person, id) 只是做了一个声明, 让本类库知道这个字段是自增字段, 进而特殊处理.
创建自增主键 ("id") 才是这个问题的关键, 影响了创建数据表的SQL语句, 创建并声明这是一个自增字段.
火山PC交流群: 748413192
回复

使用道具 举报

6

主题

115

帖子

2483

积分

金牌会员

Rank: 6Rank: 6

积分
2483
40#
发表于 2025-7-13 21:11:04 | 只看该作者
龙纹 发表于 2025-7-13 10:53
1、数据库字段确定设置了自增
2、如果是在代码中使用`创建数据表`, 编写映射类时需要按照例子设置对应的 ...

使用的是sqlite数据库.但有以下情况不知是否为bug还是确实需要这么操作
1.代码中使用`创建数据表`,编写映射类时按照例子REGISTER_AUTO_KEY(person, id),id=0插入,数据库id字段为空
2.代码中使用`创建数据表_注册键信息 (个人信息类, 创建自增主键 ("id"))`,同时编写映射类时按照例子REGISTER_AUTO_KEY(person, id),id=0插入,数据库id字段为1,可以实现自增了
回复

使用道具 举报

8

主题

109

帖子

3230

积分

论坛元老

Rank: 8Rank: 8

积分
3230
39#
 楼主| 发表于 2025-7-13 10:53:18 | 只看该作者
michardhl 发表于 2025-7-12 21:32
ID设置为0,数据库ID也显示为0,未实现自增

1、数据库字段确定设置了自增
2、如果是在代码中使用`创建数据表`, 编写映射类时需要按照例子设置对应的自增字段, 比如:REGISTER_AUTO_KEY(person, id)
你现在使用的什么数据库, mysql我已经测试过, 不能复现你的情况
火山PC交流群: 748413192
回复

使用道具 举报

6

主题

115

帖子

2483

积分

金牌会员

Rank: 6Rank: 6

积分
2483
38#
发表于 2025-7-12 21:32:40 | 只看该作者
龙纹 发表于 2025-7-12 06:02
把ID的值设置为 0 就可以了

ID设置为0,数据库ID也显示为0,未实现自增
回复

使用道具 举报

8

主题

109

帖子

3230

积分

论坛元老

Rank: 8Rank: 8

积分
3230
37#
 楼主| 发表于 2025-7-12 06:02:02 | 只看该作者
michardhl 发表于 2025-7-11 21:27
假设id设置了自增字段,目前需要指定id,假如不填写id,如何实现自增?

把ID的值设置为 0 就可以了
火山PC交流群: 748413192
回复

使用道具 举报

6

主题

115

帖子

2483

积分

金牌会员

Rank: 6Rank: 6

积分
2483
36#
发表于 2025-7-11 21:27:43 | 只看该作者
假设id设置了自增字段,目前需要指定id,假如不填写id,如何实现自增?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-9-2 04:52 , Processed in 0.096923 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表