数据库CRUD代码小助手DBHelper使用说明

前言

本小助手可分析数据库表的Create语句,自动生成程序设计语言访问数据库的CRUD代码,免去编写数据库访问代码低效、且易错的工作(虽然也有其他工具可免去你编写这些代码,但很多时候这些工具过于重量级,拿着大炮打麻雀不一定是好办法)。

本小助手生成的代码仅做微小代码改动即可轻易在不同类型数据库间切换,可参考示例中的代码。

由于本小助手为Basim个人使用SQL过程中逐步完善的软件,对很多Basim没有使用过SQL语句,也许无法成功分析,如给您带来不便,请多包含,毕竟水平有限,也请及时通知我(20878618@qq.com),我会逐步完善。

生成的代码要使用好,也还需要一些工作,最好参考下我提供的例子

第一步:上传需要分析的SQL文件

界面入下图所示:

特别说明:文件大小不可超过1M,否则系统拒绝分析,如果您的SQL文件确实较大,请去除一些与Create无关的语句或者去除部分注释。

第二步:查看分析结果

分析成功后,会显示分析结果,包括分析过程中忽略的一些SQL语句,分析得出的数据库表等信息,如果发现上传文件错误,可返回上一步重新选择SQL文件。

第三步:选择输出代码内容

界面如下图所示,你可选择数据库类型、输出的表、代码对应的名称空间以及输出的具体内容。

3.1、与表相关的内容:

OR接口:文件名为ITbl_*,表字段与程序设计语言映射的接口。

OR类(自动代码):文件名为Tbl_*,该文件为表字段与程序设计语言映射的类的基础映射信息,建议您通常不修改该部分代码,防止数据库变变更时覆盖代码导致修改丢失。

OR类(用户代码):文件名为Tbl_*_UserCode,该文件为用户初始化OR类的辅助代码,默认情况下只有框架,您可根据需要添加代码,您可将您对OR类进行辅助添加的代码都放置到该文件中。

OR类(CRUD桥接):文件名为Tbl_*_Bridge,该文件大部分为静态函数,便于用户对数据库进行CRUD操作。

OR类型枚举:文件名为EnumDBTableType,对所有数据库表进行枚举,该枚举可用于某些情况下识别出OR对象的类型(每个OR接口都继承自IDatabaseOR接口,每个OR类都实现一个OR接口,IDatabaseOR中有DBTableType属性可判断该对象的具体类型)。

CRUD类(自动代码):文件名为Sql_*_Util,该文件为对数据CRUD的基础代码,通常情况下,不建议您在该文件内增加其他代码。

CRUD类(用户代码):文件名为Sql_*_Util_Part2,该文件为辅助代码,您可根据需要增加一些您的代码,以及继承GeneralBase类(后面会说到该类)中相关虚函数扩展功能。

CRUD对象使用:文件名为DatabaseUtil_Part2,该文件为统一对所有CRUD对象进行声明、创建、初始化的类。

CRUD接口(OR扩展):文件名为IDatabaseCRUD_Part2,该文件包含了所有CRUD类的基础接口声明。

3.2、与表无关的内容:

IDatabaseOR接口:文件名为IDatabaseOR,该接口是所有OR接口的基础接口。

CRUD接口(公共基础):文件名为IDatabaseCRUD,该文件包含了所有CRUD接口的基础接口IDatabaseCRUD<T…>

CRUD公共基类(无缓存):文件名为GeneralBase,类名为GeneralBase<TObj>,该类提供一些给用户扩展的虚函数,这些虚函数在CRUD过程中会使用到(可以在Sql_*_Util类中继承扩展功能)。

CRUD公共基类(单key缓存):文件名为GeneralBase_Part2,类名为GeneralBase<TKey,TObj>,该类可为单主键的数据库表提供缓存,在数据量不大、经常使用、但又不需要频繁更新的情况下可提高效率。

CRUD公共基类(双key缓存):文件名为GeneralBase_Part3,类名为GeneralBase< TKey1,TKey2,TObj>,该类可为双主键的数据库表提供缓存,在数据量不大、经常使用、但又不需要频繁更新的情况下可提高效率。

第四步:下载代码

界面如下图所示,你可根据需要一次下载所有代码或近下载部分代码来使用。

附:示例

由于所生成的代码通常还需要进行进一步组织使用,也可能需要其他辅助代码才能更好的使用,您可以下载示例代码来参考,该示例生成的代码包括了MySqlPostgreSQL的代码,由于代码使用了Guid字段,而MySql没有默认的Guid字段类型,示例中的代码无论是访问MySql还是PostgreSQL数据库的代码,都是根据PostgreSQL脚本生成,示例中的脚本都通过DBeaver 5.3.3PostgreSQL 10以及MySql 5.7验证成功。

示例中对User表数据采用了缓存机制(Sql_User_Util类继承自GeneralBase<TKey,TObj>而非GeneralBase<TObj>),在Sql_User_Util.cs文件中,删除了部分自动生成的代码,也在Sql_User_Util_Part2.cs增加了初始化函数

特别提示:由于User表的KeyString类型,通常查询数据库时不区分大小写,使用缓存机制时采用了AutoCacheStringKey<T>而非普通的AutoCache<K,T>,且被缓存的Tbl_User类也实现了接口ICacheable<string>)。